Laravel Update Model and Relationship Data at the Same Time

Hello, sometimes we need to update model & relationship tables data at the same time. We can do it very easily using Laravel eloquent. Let’s see:

Table of Contents

  1. Set Relationship
  2. Update Data

Set Relationship

I’m going to setup relationship in User model with Country table.

User.php
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    /**
     * Get the country associated with the user.
     */
    public function country()
    {
        return $this->hasOne(Country::class);
    }
}

Update Data

Using push() method, we can update model & relationship date. Have a look at the example:

// test
$user = User::find(1);
$user->name = "Md Obydullah";
$user->country->name = "Bangladesh";
$user->push();

// on form submit
$user = User::find($request->id);
$user->name = $request->name;
$user->country->name = $request->country_name;
$user->push();

That’s all, artisans. Thanks for reading.