2016-03-07 66 views
0

我目前正在向我的网站添加一个功能,提出问题并给出多选答案。Laravel-在视图中显示一对多关系

我的回答模式有如下代码:

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(); 

它显示的是这样的:

question1

答案在这里

问题1

这里回答2

问题1

这里回答3

问题2

2回答这里

问题2

2回答这里2

问题2

2这里3

我想只显示一次的问题答案。我是Laravel新手。

回答

1

你需要翻转这个话,并且首先从DB获得您的问题:

$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 

注意您第一次遍历的问题,并通过回答每个问题一次显示的问题,然后循环。

+0

它现在打印所有的问题,但每个都有一个答案。 问题1 这里问题1回答 问题2 这里问题1回答2 问题3 这里问题1回答3 问题4 question2-回答这里 question5 question2-回答这里2 question6 问题2回答这里3 这是如何设置? public function answer(){ return $ this-> hasMany('App \ Answer','answer_id'); } – Emma

+0

在控制器中执行'dd($ questions)'并检查数据库结果。确保您的关系是正确的,并且您在对视图进行故障排除之前获得预期的结果。 – jszobody

+0

非常感谢你!这是我的关系! :)你提供的代码完美的作品! – Emma