Laravel-在视图中显示一对多关系

时间:2016-03-07 15:31:11

标签: php laravel model-view-controller laravel-5.1

我目前正在向我的网站添加一项功能,询问问题并提供多项选择答案。

我的答案模型的代码如下:

protected $table = 'answer';
protected $primaryKey = 'answer_id';
protected $fillable = ['question_id'];


 public function question()
{
    return $this->belongsTo('App\Question','question_id')->distinct();
}

我的观点是:

@foreach ($answers as $answer)



<h2>{{$answer->question->question}}</h2>

  <p>{{$answer->answer}}</p>

@endforeach

我的控制器是:

     $answers = Answer::with('question')->first()->get();

显示如下:

问题1

在这里回答

问题1

在这里回答2

问题1

在这里回答3

问题2

2回答

问题2

2回答2

问题2

2回答3

我想只展示一次问题。我是Laravel的新手。

1 个答案:

答案 0 :(得分:1)

您需要翻转它,然后首先从数据库中获取您的问题:

$questions = Question::with('answers')->get();

这当然假设您已经在问题模型中设置了hasMany关系。

然后在您的视图中,您将有两个循环:

@foreach ($questions as $question)
    <h2>{{$question->question}}</h2>

    @foreach ($question->answers as $answer)     
        <p>{{$answer->answer}}</p>
    @endforeach

@endforeach

请注意您首先循环问题并显示问题一次,然后循环查看每个问题的答案。