【发布时间】:2017-09-23 06:33:30
【问题描述】:
在 laravel 中我使用 eloquent 从数据库中获取数据。
我有两个表“问题”和“选项” 我正在使用雄辩的方法将'选项'加入'问题'
$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 的 eloquent 来实现这一点,否则我将不得不应用额外的逻辑。
【问题讨论】:
-
您需要在 PHP 中准备您的数组,只需循环您在
$questions变量中收到的数组集合,并将结果数组作为响应传递。或者,如果您使用简单的ORM结构,则只需在Question模型中准备一个关系,您就可以使用with或load方法或直接调用在您的集合中获取它,这是不可取的