0
laravelでは、データベースからデータを取得するために雄弁を使用しています。関連する行の配列としての結合結果のマッピング
私は2つのテーブルからの質問」を持っているし、「オプション」 の質問 "
$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
}
]
すべてのオプションを関連する質問内のキーの下にネストする必要があります。 Like
[
{
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の雄弁でこれを達成できますか、余分なロジックを適用する必要があります。あなたは、余分なロジックをapplieしたい場合
を助けるかもしれないあなたは$ questions' '内に受信され、配列のコレクション変数や配列を生じたパスに応じて。あるいは単純な 'ORM'構造体を使っていたら' Question'モデル内で関係を準備するだけで、 'with'や' load'メソッドや直接呼び出しを使ってコレクション内で取得できます –