我是php和larval的新手。我有以下数据库表的问题和答案。每个问题都可以有多个答案,并在正确的答案字段中指出更正的答案。我试图用这样的答案列出问题
这是问题.... 一个。第一个答案 湾第二个答案 C。第三个答案 d。第四个答案
我有以下代码:
public static function getMultipleChoiceQuestions($chapter)
{
$data = DB::table('newQuestions')
->join('newAnswers', 'newQuestions.questionId', '=', 'newAnswers.questionId')
->where('chapterId', '=', $chapter)->orderBy('newQuestions.questionId')
->where('questionType', '=', "1")
->get();
$questions = array('questionType' => $questionType, 'data' => $data);
return $questions;
}
问题表: chapterId questionId questionText
答案表: answerId questionId answerText correctAnswer
以下代码显示每个答案的问题。
<fieldset id="group_1">
<p><div><input type="checkbox" class="checkall"> Check all</div></p>
<div style="width:600px; height:300px; overflow: auto;">
@foreach($questions['data'] as $question)
<p><input name="your_name" value="{{ $question->questionId }}" id="{{ $question->questionId }}" type="checkbox" class="questionsOnPage" />
{{ $question->questionText }}</p>
@endforeach
</div>
</fieldset>
我想列出问题然后回答下一个问题。
请帮忙!
答案 0 :(得分:3)
我认为你需要进一步了解Eloquent。你应该可以做这样的事情。
以下是建立关系的方法。基于此,您的答案表名称必须为answers
,并且需要一个名为question_id
的列。虽然,您可以浏览文档以了解如何设置自定义表名和列名。
应用/模型/ Question.php 强>
class Question extends Eloquent {
public function answers()
{
return $this->hasMany('Answer');
}
}
应用/模型/ Answer.php 强>
class Answer extends Eloquent {
public function question()
{
return $this->belongsTo('Question')
}
}
现在,一旦这些关系设置完毕,我们就可以真正使用Eloquent了。您可以使用刀片轻松地在视图中执行此类操作。
外部的foreach将遍历每个问题。内部foreach将显示属于当前问题的每个答案,然后转到下一个问题。
@foreach(Question::all() as $question)
<h3>{{ $question->title }}</h3>
<ul>
@foreach($question->answers->all() as $answer)
<li>{{$answer->text}}</li>
@endforeach
</ul>
@endforeach
您在那里看到的title
和text
属性,只需要是数据库中的列名。你应该改变那些与你的相匹配。
使用上面的示例,您应该能够根据需要设置样式并将其放置在表单中。现在它将在h3标签内显示问题,然后在下面显示答案的无序列表。