【发布时间】:2015-08-13 21:08:20
【问题描述】:
最近我问了这个问题,得到了一个答案,但不幸的是没有解决问题,之后我没有得到更多答案,我真的需要解决这个问题。
好的,所以我必须为我的学校制作一个测验网站,用户应该能够在其中玩测验,此页面需要显示测验名称、与测验相关的问题以及与问题相关的答案。 我可以显示测验名称没有问题,我也可以显示问题,但由于某种原因,只显示与最终问题相关的答案。
这是我的代码:
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
我知道问题在于我从数据库获得答案的方式,但我不知道如何解决它。非常感谢您的帮助!感谢阅读!
*编辑,
我的数据库方案如下:
我有
- 一个名为 quizzes 的表格,带有 ID、名称和描述。
- 一个名为 questions 的表,带有一个 id、question 和一个外键“quiz_id”
- 一个名为 answers 的表,带有一个 id、answer 和一个外键“question_id”
一个测验可以有多个问题,但一个问题只能有一个测验, 一个问题可以有多个答案,但一个答案只能有一个问题。
我希望这是关于我的数据库的足够信息,感谢您的帮助!
【问题讨论】:
-
问题出在你的 foreach 循环中,你正在写
$answer变量而不是添加到它,这就是为什么你只看到最后一个。无论如何,我认为这是错误的方法,您应该利用 Eloquents 的关系功能。我现在会尝试给出一个答案,但您可能需要通过编辑和更新您的问题来稍微解释一下您的数据库架构。 -
感谢数据库架构的更新。我相信我不需要更新我的答案,因为我所做的假设几乎就是您描述数据库的方式。我在处理 4.3 时尝试这样做,但是如果您看到一些看起来不正确的东西,例如您在模型中扩展的类,那么请忽略它。希望你能得到它的工作,如果你需要帮助,请发表评论。谢谢。
标签: php laravel laravel-4 eloquent blade