Возврат коллекции после обновления ()?

Используя Raw, как вернуть коллекцию обновленной строки?

Например:

$updated = DB::table('users')->where('id', 1)->update(['votes' => 123]); 

Я ожидал, что dd($updated) вернет обновленную строку коллекции, но она вернулась 1.

 {{$updated->votes}} should return 123 

Это не так, как это работает. Вы не можете ожидать, что этот запрос вернет вам объект:

 $updated = DB::table('users')->where('id', 1)->update(['votes' => 123]); 

Если вы хотите использовать Query Builder только так, как вы упомянули в своем вопросе, вам нужно будет получить объект вручную:

 $data = DB::table('users')->where('id', 1)->first(); 

С помощью Eloquent вы можете использовать updateOrCreate() :

 $data = User::where('id', 1)->updateOrCreate(['votes' => 123]); 

Это вернет объект. update() вернет boolean, поэтому вы не можете использовать его здесь.

В контроллере вы пишете ниже код для обновления:

  $updated = DB::table('users')->where('id', 1)->update(['votes' => 123])->get(); 

Все функции, относящиеся к базе данных, возвращают одинаковое значение, так как вы запускаете необработанный запрос через собственные функции php.

Если вы запускаете запрос UPDATE или INSERT в PHP, он возвращает boolean. То же самое в Laravel update() возвращает 1 или 0.

Его полностью нормальные, только функции, которые используют SELECT за кулисами, возвращают объект, содержащий строку. Пример FOr: first() , get() , find() и т. Д.