拉拉维尔-在视图中显示一对多关系


Laravel-Displaying one to many relationship in view

我目前正在我的网站上添加一个功能,可以提出问题并提供多项选择答案。

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

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

我只想展示一次问题。我是拉拉维尔的新手。

然后你需要翻转这个,首先从数据库中得到你的问题:

$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

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