Я пытаюсь пометить экзамен «is_complete», если «результат» достигнет 2. Я хотел бы сделать это, когда форма отправляется пользователем после завершения теста и расчета результатов. Обе переменные находятся в одной таблице. Это возможно через PHP или мне нужно использовать скрипт Java.
Вот как я пытался разработать код.
На модели
public function answers()
{
return $this->hasMany('App\ExamResultsAnswers');
}
public function passed()
{
$instance = new ExamResult;
$instance->result < 2;
$var = ExamResult::where('result', '>=', 2)->get();
$var_is_greater_than_two = ($var >= 2 ? true : false);
$condition = new ExamResult;
$condition->is_complete ='1';
if ($this->compare($instance, $condition)) {
return $instance->$column == 1;
}
}
На контроллере
public function exam($course_id, Request $request)
{
$course = Course::where('id', $course_id)->firstOrFail();
$answers = [];
$exam_score = 0;
foreach ($request->get('question') 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);
$exam_result->passed();
return redirect()->route('learn.show', [$course, $request])->with('message', 'Test score: ' . $exam_score);
}
Контроллер должен делать следующее
- Найти все курсы и экзамены, связанные с курсом - это работает
- Тогда найдите все вопросы и варианты вопросов - это работает
- Тогда, если пользователь выберет правильный ответ
затем посчитайте все правильные ответы - это работает
- Тогда я хочу сохранить
результаты и отметьте его как завершенный, если ответы выше 2 правильных
ответы. - Здесь код сохраняет exam_id, employee_id и результат,
но это не делает его полным, если результат равен 2. То есть
почему я пытался сделать это на модели.