0
laravel使用雄辩从数据库中获取数据。作为相关行下的数组映射连接结果
我有两个表“问题”和“选项” 现在用雄辩的方法来连接“选项”到“问题”
$questions = Question::join('options', 'options.question_id', 'questions.id');
return QuestionResource($questions);
这不会返回数据,其中同一个问题的预期集合在集合中多次出现,并且每个“options.question_id”和“question.id”都是相同的不同选项。
[
{
id: 1,
text: "Africa is a...?",
// joined option
question_id: 1,
value: "city",
answer: false
},
{
id: 1,
text: "Africa is a...?",
// joined option
question_id: 1,
value: "planet",
answer: false
},
{
id: 1,
text: "Africa is a...?",
// joined option
question_id: 1,
value: "continent",
answer: true
},
{
id: 2,
text: "Albert Heinstein was a...?",
// joined option
question_id: 2,
value: "comedian",
answer: false
},
{
id: 2,
text: "Albert Heinstein was a...?",
// joined option
question_id: 1,
value: "genius scientist",
answer: true
}
]
我希望所有选项都嵌套在相关问题的关键字下。像
[
{
id: 1,
text: "Africa is a...?",
// joined options
options: [
{value: "city", answer: false},
{value: "planet", answer: false},
{value: "continent", answer: true}
]
},
{
id: 2,
text: "Albert Heinstein was a...?",
// joined options
options: [
{value: "comedian", answer: false},
{value: "genius scientist", answer: true}
]
}
]
我可以用laravel雄辩实现这一目标,不然我就必须申请一个额外的逻辑。
你需要PHP简单循环内准备数组,您在'$ questions'收到阵列的集合变量并传递导致阵列作为回应。或者,如果您使用的是简单的'ORM'结构,那么只需在'Question'模型中准备一个关系,并且您可以使用'with'或'load'方法或直接调用来获得该关系 –