Laravel 8 Many To Many Relationship Example

In this article, we will see laravel 8 many to many relationship example. Use many to many relationship in laravel 6 and laravel 7 and laravel 8. 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.

So, let's see many to many relationship in laravel 8 or laravel 8 eloquent relationships.

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. We will create a User and Roles and Role_users table. all tables are connected with each other table. Now we will create many to many relationships with each other by using the laravel Eloquent Model.

laravel_many_to_many_relationship

 

 

Create Migration

Now, we have to create migration for users and roles and role_users table. we will also add a foreign key with 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 of 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 

 Now, we will create records using the attach() function.

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

 


You might also like:

RECOMMENDED POSTS

FEATURE POSTS