最近我問了這個問題,得到了一個答案,但不幸的是沒有解決問題,之後,我沒有更多的答案,我真的需要解決這個問題,我有。檢索多個記錄相關的多個記錄laravel 4.2
好吧,我必須爲我的學校做一個測驗網站,用戶應該能夠玩這個測驗,這個頁面需要顯示測驗的名字,與測驗相關的問題和與問題相關的答案。 我可以顯示測驗名稱沒有問題,我也可以顯示問題,但出於某種原因,只顯示與最終問題相關的答案。
這裏是我的代碼:
public function playQuiz($id)
{
// get all the questions associated to the selected quiz
$questions = Question::where('quiz_id', $id)->get();
// get all the answers associated to the questions
foreach($questions as $question)
{
$answers = Answer::where('question_id', $question->id)->get();
}
$data = [
'quiz' => Quiz::find($id),
'questions' => $questions,
'answers' => $answers
];
return View::make("quizzes.playQuiz", $data);
}
的$ id變量是我選擇這樣的測驗,我應該能夠檢索關聯到這個ID的所有數據的id和相關聯的相關數據的所有數據這個ID。
這裏是我的html(帶刀片):
<h3>{{ $quiz->name }}</h3>
@foreach($questions as $question)
<h4>{{ $question->question }}</h4>
@foreach($answers as $answer)
@if($answer->question_id == $question->id)
<p>{{ $answer->answer }}</p>
@endif
@endforeach
@endforeach
我知道問題出在我從DB我的答案的方式中,但我不知道如何解決它。非常感謝幫助!謝謝閱讀!
*編輯,
我的DB計劃去如下:
我有
- 表調用的ID,名稱和說明測驗。
- 一個ID,問題和外鍵的表稱爲問題「quiz_id」
- 表調用一個id,答案和外鍵的回答「question_id」
測驗可以有多個問題但一個問題只能有一個測驗, 一個問題可以有多個答案,但答案只能有一個問題。
我希望這是關於我的數據庫的足夠信息,感謝您的幫助!
問題在於你正在寫'$ answer'變量而不是添加到它的foreach循環,這就是爲什麼你只能看到最後一個。無論如何,我認爲這是錯誤的方法,你應該利用Eloquents關係功能。我現在嘗試拋出一個答案,但是你可能需要通過編輯和更新你的問題來解釋你的數據庫模式。 – haakym
感謝您對數據庫架構的更新。我相信我不應該更新我的答案,因爲我所做的假設與您描述數據庫的方式非常相似。我在4.3版本中試圖做到這一點,但是如果你看到某些看起來不正確的東西,比如你在模型中擴展了什麼類,那麼就忽略它。希望你能使它工作,如果你需要幫助,請留下評論。謝謝。 – haakym