Many To Many Relationship Laravel 9 Example

In this article, we will see many to many relationship in laravel 9 example. Many to many relationships are more complicated than one to one and one to many relationships. An example of like a relationship is a user with multiple roles, where the role are also connected with multiple users. Also, you can use many to many relationships in laravel 6 and laravel 7 and laravel 8.

So, let's see laravel 9 many to many relationship, laravel 9 hasMany example, laravel 9 eloquent relationships, and laravel 9 relationship.

We will create a User and Roles and Role_users table. all tables are connected to each other table. Now we will create many to many relationships with each other by using the laravel Eloquent Model.

Also, we will create migration with a foreign key, sync with a pivot table, retrieve records using the model, insert new records, update records, etc.

many_to_many_relationship_laravel_9

Create Migration

Now, we have to create migration for users and roles and role_users table. we will also add foreign keys to the users and roles table.

Create Migration of Users Table

Schema::create('users', function (Blueprint $table) {

    $table->increments('id');

    $table->string('name');

    $table->string('email')->unique();

    $table->timestamps();

});

 

 

Create Migration of Roles Table

Schema::create('roles', function (Blueprint $table) {

    $table->increments('id');

    $table->string('name');

    $table->timestamps();

});

Create Migration of Role Users Table

Schema::create('role_users', function (Blueprint $table) {

    $table->integer('user_id')->unsigned();

    $table->integer('role_id')->unsigned();

    $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');

    $table->foreign('role_id')->references('id')->on('roles')->onDelete('cascade');

});

 

Create Model and Add Relationship on Both Model

Now, we will create a User, Role model. we will use the belongsToMany() relationship for both models.

User Model:

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    /**
     * Get the phone associated with the user.
     */
    public function roles()
    {
        return $this->belongsToMany(Role::class, 'role_users');
    }
}

Role Model:

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Role extends Model
{    
    public function user()
    {
        return $this->belongsToMany(User::class, 'role_users');
    }
}

 

 

Retrieve Records using Model:

Once the relationship is defined, we may retrieve the related record using Eloquent's dynamic properties.

$role = User::find(1)->roles;
$user = Role::find(1)->users;

 

Create Records using Model 

In this step, we will create records in the role tables. 

$user = User::find(1);	
 
$role_ids = [1, 2];
$user->roles()->attach($role_ids);
$user = User::find(2);	
 
$role_ids = [1, 2];
$user->roles()->sync($role_ids);

 


You might also like:

techsolutionstuff

Techsolutionstuff | The Complete Guide

I'm a software engineer and the founder of techsolutionstuff.com. Hailing from India, I craft articles, tutorials, tricks, and tips to aid developers. Explore Laravel, PHP, MySQL, jQuery, Bootstrap, Node.js, Vue.js, and AngularJS in our tech stack.

RECOMMENDED POSTS

FEATURE POSTS