Как проверить значение в другой таблице? - PullRequest
0 голосов
/ 13 мая 2019

У меня есть 2 таблицы, одна называется Экзамены, а другая - Результаты экзаменов. На экзамене я вхожу в Passing_score и в результатах экзамена сохраняю ответ на экзамене. Я пытаюсь найти значение_пропуска и если проходной балл больше, чем результат, то человек прошел.

Вот вся функция этого кода

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_id = ExamResult::all();

            $final_results = Exam::where('id', $exam_id)->get(['passing_grade']);
            $val = $final_results->passing_grade;


            if($exam_result->result >= $val) {
              $exam_result->is_complete = 1;
              $exam_result->save();
}

            return redirect()->route('learn.show', [$course, $request])->with('message', 'Test score: ' . $exam_score);
        }

Вот логика, которую я попробовал, и я застрял.

  $exam_id = ExamResult::all();
  $final_results = Exam::where('id', $exam_id)->get('passing_grade');
  $val = $final_results->passing_grade;

            if($exam_result->result >= $val) {
              $exam_result->is_complete = 1;
              $exam_result->save();
}

Вот ошибка, которую я получаю

Аргумент 1, передаваемый в Illuminate \ Database \ Grammar :: columnize (), должен быть типа массив, заданная строка, вызывается в /Applications/MAMP/htdocs/QuickHS/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/Grammar.php по линии 137

Вот структура базы данных для 2 таблиц Это экзаменационный стол enter image description here

Это таблица результатов экзамена enter image description here

Ответы [ 2 ]

0 голосов
/ 14 мая 2019

Я решил это, и вот как я это сделал

     $final_results= Exam::first();
     $x = $final_results->passing_grade;

      if($exam_result->result >= $x) 
        {
               $exam_result->is_complete = 1;
                  $exam_result->save();
   }
0 голосов
/ 13 мая 2019

Вот исправление. Пожалуйста, попробуйте это.

 $final_results = Exam::where('id', $exam_id)->first();
 $val = $final_results->passing_grade;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...