поэтому я хочу вычислить балл для моего результата теста, я получаю ответ из таблицы ответов в базе данных и вычисляю его в функции score () внутри контроллера.
Я хочу провести различие между вычислением результата теста с первой попытки и второй, поэтому, если мой результат в тесте 1 был 20, то моя вторая попытка не будет 20 + вторая попытка.
я делаю это, добавляя столбец disable в таблицу ответов, и значение по умолчанию, когда добавляется anwers, равно false, данные anwer будут рассчитываться как данные с отключенным столбцом со значением false, а после вычисления в функции score () я поворачиваю отключить столбец, чтобы быть истинным с функцией update () . в контроллере.
проблема в том, что колонка всегда отключена, поэтому моя функция Score () не может вычислить данные ответов
мой код в контроллере
функция для получения данных оценки:
public function getShowResultOfQuiz($id){
$categoryquiz= JenisQuiz::find($id);
$user=Auth::user()->id;
$score=$this->score(); //go to score function
$kelas = Auth::user()->kelas;
$instansi = Auth::user()->instansi;
History::create([
'user_id'=>$user,
'jenis_quiz_id'=>$id,
'score'=> $score,
'kelas' => $kelas,
'instansi' => $instansi
]); //create data score in database
$this->update(); //goto update function
switch ($id) {
case '1':
return view('user.pages.quizresult',compact('score','categoryquiz','sarans','answers'));
break;
case '2':
return view('user.pages.quizanxietyresult',compact('score','categoryquiz','answers','sarans'));
break;
case '3':
return view('user.pages.quizdepresiresult',compact('score','categoryquiz','$answers','$sarans'));
break;
}
}
функция для подсчета очков:
public function score(){
$user_data = Auth::user();
$answers = $user_data->answer()->select('user_answer')->where('disable','=',false)->get(); // get answer data with only if disable value false
$a = 0;
$b = 0;
$c = 0;
if($answers->count()) {
foreach ($answers as $answer) {
switch ($answer->user_answer) {
case 1:
$a++;
break;
case 2:
$b++;
break;
case 3:
$c++;
break;
}
}
}
return $a+$b+$c; //return $score
}
моя функция обновления:
public function update(){
$user_id = Auth::user()->id;
$user_data = User::find($user_id);
$answers_update = $user_data->answer()->whereDisable(false);
$answers_update->update(array("disable" => true)); //turn disable value to true
}
ожидаемо: вызов данных ответа с отключенным значением false -> вычислить его в функции счета -> сохранить счет в базе данных-> включить отключить значение данных = true
проблема: отключить данные для истины -> данные ответа не могут быть получены с помощью функции оценки