How to reload/refresh model from database in Laravel? How to reload/refresh model from database in Laravel? laravel laravel

How to reload/refresh model from database in Laravel?


There was a commit submitted to the 4.0 branch made in August to add a reload() method, but so far it hasn't been merged with the newer Laravel branches.

But... Laravel 5 is providing a "fresh()" method that will return a new instance of the current model. Once you're using Laravel 5.0 or newer, you can reload a model like this:

$model = $model->fresh(); 

Note that fresh() doesn't directly update your existing $model, it just returns a new instance, so that's why we need to use "$model = ". It also accepts a parameter which is an array of relations that you want it to eager load.

If you aren't yet using Laravel 5 but you want the same functionality, you can add this method to your model(s):

public function fresh(array $with = array()){    $key = $this->getKeyName();    return $this->exists ? static::with($with)->where($key, $this->getKey())->first() : null;}

Update: If you're using Laravel 5.4.24 or newer, there is now a $model->refresh() method that you can use to refresh the object's attributes and relationships in place rather than fetching a new object like fresh() does. See Jeff Puckett answer for more specifics on that.


Thanks to PR#19174 available since 5.4.24 is the refresh method.

$model->refresh();

This way you don't have to deal with reassignment as is shown in other answers with the fresh method, which is generally not helpful if you want to refresh a model that's been passed into another method because the variable assignment will be out of scope for the calling contexts to use later.


  • refresh() is a mutable operation: It will reload the current model instance from the database.
  • fresh() is an immutable operation: It returns a new model instance from the database. It doesn't affect the current instance.
// Database state:$user=User::create([  'name' => 'John',]);// Model (memory) state:$user->name = 'Sarah';$user2 = $user->fresh();// $user->name => 'Sarah';// $user2->name => 'John'$user->refresh();// $user->name => 'John'