Итак, я обнаружил, что до того, как я запускаю свою функцию в контроллере для обновления данных, данные обновляются без нажатия кнопки.Я также пытаюсь отложить его с помощью sleep()
, но он всегда срабатывает первым.
Я хочу рассчитать данные с ложным значением столбца отключения, а после вычисления в функции score () вернуть значение из функции вычисления, сохраненной в базе данных, а затем нажать кнопку, чтобы обновить столбец отключения до истинного с помощью функции update () (чтобы вычисленные данные не рассчитывались снова)
мой контроллер: функция для получения данных для вычисления:
public function getShowResultOfQuiz($id){
History::create([
'user_id'=>$user,
'jenis_quiz_id'=>$id,
'score'=> $score,
'kelas' => $kelas,
'instansi' => $instansi
]);
$categoryquiz= JenisQuiz::find($id);
$user=Auth::user()->id;
$score=0;
$score=$this->score(); // function to calculate data
$kelas = Auth::user()->kelas;
$instansi = Auth::user()->instansi;
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();
$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;
}
функция для обновления:
public function update(){
sleep(30);
$user_id = Auth::user()->id;
$user_data = User::find($user_id);
$answers_update = $user_data->answer()->whereDisable(false);
$answers_update->update(array("disable" => true));
}
Икогда я в поле зрения user.pages.quizresult
есть кнопка для запуска функции обновления
ожидаемо: ответ на вызов данных с отключенным значением false -> вычислить его в функции счета -> сохранить счет в базе данных -> отключить отключение данныхзначение = true
проблема: отключить отключение данных true -> данные ответа не могут быть получены с помощью функции оценки