尝试从一个表中获取id,该表在另一个表中有多个答案

时间:2017-02-20 16:05:11

标签: php laravel laravel-5 eloquent laravel-5.3

我有一个问题表,其中包含所有问题。我还有一个答案表,其中包含所有答案。 一个问题可以有多个答案,答案只属于一个问题。 所以问题是如何通过它的id来获取问题,它还应该包含属于这个问题的所有答案。

答案型号

class Answer extends Model
{
    public function question()
    {
        return $this->belongsTo('App\Question');
    }
}

问题模型

class Question extends Model
{

    public function answers()
    {
        return $this->hasMany('App\Answer');
    }
}

我怎么能写一个查询,我已经尝试了一些,但我现在很困惑

1 个答案:

答案 0 :(得分:0)

每次访问问题模型的答案属性时,Eloquent都会加载并返回所有相关答案,因此以下代码可以解决问题:

$answers = $question->answers;

在加载多个问题时,您应该考虑使用 eager-load 以更有效的方式加载相关答案 - 对所有问题使用一个查询,而不是针对每个问题单独查询:

$questions = Question::with('answers')->get();
foreach ($questions as $question) {
  $questionAnswers = $question->answers;
}