Как сделать так, чтобы переменная не менялась?после выполнения функции - PullRequest
0 голосов
/ 03 июля 2019

поэтому я хочу вычислить балл для моего результата теста, я получаю ответ из таблицы ответов в базе данных и вычисляю его в функции 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

проблема: отключить данные для истины -> данные ответа не могут быть получены с помощью функции оценки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...