In Laravel when you insert a data we use save(). We will see the difference between
save() and push with examples.
public function push()
if ( ! $this->save()) return false;
// To sync all of the relationships to the database, we will simply spin through
// the relationships and save each model via this "push" method, which allows
// us to recurse into all of these nested relations for the model instance.
foreach ($this->relations as $models)
foreach (Collection::make($models) as $model)
if ( ! $model->push()) return false;
push() will update all the models so if you change any relationships then call push so that it will update
the model and all its relations.
$user = User::find(32);
$user->name = "TestUser";
$user->state = "Texas";
$user->location->address = "123 test address"; //This line is a pre-defined
If you gave $user->save(); the address will not be saved to address model. Instead if
you use $user->push(); the address will be saved to address table/model since you
have defined that relationship in User model. Push() will also update the updated_at
timestamps of all the related models of the user/model you push().