表:问题(id,问题),答案(id,question_id,answer)
一个问题有很多答案
如何使用laravel查询构建器从一个表(例如问题)及其他表(答案)中的所有相关数据中获取数据。
DB::table('questions')
->rightJoin('answers','questions.id', '=', 'answers.question_id')
->groupBy('questions.id')
->select('questions.question','answers.answer', 'questions.id', 'answers.question_id')
->get();
这是我到目前为止所做的,但它似乎并没有给出我想要数据结构的方式。
答案 0 :(得分:0)
表:问题(id,问题),答案(id,question_id,answer)
$query = DB::table('questions')
->join('answers', 'questions.id', '=', 'answers.question_id')
->select('questions.question','answers.answer', 'questions.id', 'answers.question_id')
->get();
运行它,如果它仍然不起作用,请给我们toSql()
查询构建器的SQL。
您必须更加具体地了解数据结构的方式。如果它更复杂,可能需要在PHP中进行更多操作。
答案 1 :(得分:0)
所以在你的问题类中你必须添加这个
public function answers(){
return $this->hasMany('Answer');
}
如果您想要问题的答案,可以在刀片视图中执行类似的操作
@foreach($questions as $question)
@foreach($question->answers as $answer)
<td>{{ $question->question }}</td>
<td>{{ $answer->answer }}</td>
<td>{{ $answer->id }}</td>
<td>{{ $question->id }}</td>
@endforeach
@endforeach
编辑:所以你没有使用雄辩的...只有一个问题,为什么在你的选择中你得到两倍相同的列? &#39; questions.id&#39;和&#39; answers.question_id&#39;会是一样的。如果你改变questions.id by answers.id
DB::table('questions')
->rightJoin('answers','questions.id', '=', 'answers.question_id')
->groupBy('questions.id')
->select('questions.question','answers.answer', 'answers.id', 'answers.question_id')
->get();