2016-03-07 37 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