phplaravellaravel-5laravel-5.3

Return Collection after update()?


Using Raw, how to return collection of updated row?

For example:

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

I was expecting dd($updated) to return updated row of collection but it returned 1.

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

Solution

  • That's not how it works. You can't expect this query will return you an object:

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

    If you want to use Query Builder only as you mentioned in your question, you'll need to get an object manually:

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

    With Eloquent you can use the updateOrCreate():

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

    This will return an object. update() will return boolean, so you can't use it here.