разница между fill () и update () в laravel - PullRequest
0 голосов
/ 19 марта 2020

Я хочу изменить значение в таблице, используя ajax в laravel. Но когда я использую fill (), возвращаемое значение - это «успех», но когда я использую update (), возвращаемое значение не получается. Мой исходный код следующий.

    public function deleteCourse($id){
       $test = Course::find($id)->fill(['is_deleted' => 1])->save();
       $res = ['res' => 'success'];
       return json_encode($res);
    }
    public function deleteCourse($id){
       $test = Course::find($id)->update(['is_deleted'=>1])->save()'
       $res = ['res'=>'success'];
       return json_encode($res);
    }

Ответы [ 2 ]

0 голосов
/ 19 марта 2020

Вы не можете позвонить ->save() после ->update(), так как он возвращает boolean 1 или 0 (успех или неудача). Запись напрямую обновляется в базе данных, поэтому ->save() не требуется.

fill(), с другой стороны, ничего не сохраняет в базе данных, пока вы не вызовете ->save(), поэтому она требуется в этот экземпляр.

public function deleteCourse($id){
  $test = Course::find($id)->fill(['is_deleted' => 1])->save();
  $res = ['res' => 'success'];
  return json_encode($res);
}

// OR

public function deleteCourse($id){
  $test = Course::find($id)->update(['is_deleted'=>1]);
  $res = ['res'=>'success'];
  return json_encode($res);
}
0 голосов
/ 19 марта 2020

Заполнение не будет сохранено в базе данных, пока вы не вызовете ->save для объекта.

Обновление немедленно изменит значение в базе данных.

В вашем случае строка не была правильно завершена. Добавьте точку с запятой в конце.

$test = Course::find($id)->update(['is_deleted'=>1]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...