我已将Exams模型更改为将ExamQuestions从hasMany保存为belongsTo,这是我修改控制器的方式。我在视图中为foreach()提供了一个无效的参数。
这是我已更改的考试模型
public function questions()
{
return $this->belongsTo(ExamQuestion::class, 'exam_questions');
}
这是我的控制人
public function exam($course_id, Request $request)
{
$course = Course::where('id', $course_id)->firstOrFail();
$answers = [];
$exam_score = 0;
foreach ($request->get('questions') as $question_id => $answer_id) {
$question = ExamQuestion::find($question_id);
$correct_answer = ExamOption::where('exam_question_id', $question_id)
->where('id', $answer_id)
->where('is_correct', 1)->count() > 0;
$answers[] = [
'exam_question_id' => $question_id,
'exam_option_id' => $answer_id,
'corect' => $correct_answer
];
if ($correct_answer) {
$exam_score += $question->score;
}
}
$exam_result = ExamResult::create([
'exam_id' => $course->exam->id,
'employee_id' => \Auth::id(),
'result' => $exam_score,
]);
$exam_result->answers()->createMany($answers);
$get_reslts_score= Exam::with('exam_results')->first();
$x = $get_reslts_score->passing_grade;
if($exam_result->result >= $x) {
$exam_result->is_complete = 1;
$exam_result->save();
}
return redirect()->route('learn.show', [$course, $request])->with('message', 'Test score: ' . $exam_score);
}
这是我的观点
<h3>@if ($courses->exam)</h3>
<hr/>
<div class="row">
<div class="col-xs-12 form-group">
<form action="{{ route('exam.save', [$courses->id]) }}" method="post">
{{ csrf_field() }}
@foreach($courses->exam->questions as $question)
<br>{{$loop->iteration}} . {{$question->question}}</b>
</br>
@foreach($questions->exam_options as $option)
<input type="radio" name="question[{{ $question->id }}]" value="{{ $option->id }}"/> {{ $option->text }}</br>
@endforeach
<br>
@endforeach
答案 0 :(得分:1)
<h3>@if ($courses->exam)</h3>
<hr/>
<div class="row">
<div class="col-xs-12 form-group">
<form action="{{ route('exam.save', [$courses->id]) }}" method="post">
{{ csrf_field() }}
@foreach($courses->exam->questions as $questions)
<br>{{$loop->iteration}} . {{$questions->question}}</b>
</br>
@foreach($questions->exam_options as $option)
<input type="radio" name="question[{{ $questions->id }}]" value="{{ $option->id }}"/> {{ $option->text }}</br>
@endforeach
<br>
@endforeach
如果它不起作用,请检查您的模型关系是否返回值。使用父级递归遍历整个数组,您可以达到任意深度here