Laravel 8 Many To Many Relationship Example

Websolutionstuff | Nov-15-2021 | Categories : Laravel PHP MySQL

In this example 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 relationship is complicated than one to one and one to many relationships. example of like a relationship is a user with have multiple roles, where the role are also connected with multiple users.

Also we will create migration with foreign key, sync with a pivot table, retrieve records using model, insert new records, update records etc. We will create 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 foreign key with 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 User, Role model. we will use belongsToMany() relationship of both model.

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 
$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 Post
Featured Post
How To Count Days Excluding Weekends And Holidays In Laravel 9
How To Count Days Excluding We...

In this article, we will see how to count days excluding weekends and holidays in laravel 9. Here, we will learn to...

Read More

Jan-24-2023

How To Generate QR Code Using Javascript
How To Generate QR Code Using...

In this tutorial we will see how to generate QR code using javascript. we will implement QR code generator without...

Read More

Jul-19-2021

How To Upload And Preview Image In React JS
How To Upload And Preview Imag...

In this article, we will see how to upload and preview images in react js. You can learn how to show an i...

Read More

Sep-06-2022

How to Create Zip File in Ubuntu using Command
How to Create Zip File in Ubun...

Hey folks! If you're anything like me, sometimes you just want a quick and straightforward way to bundle up a bunch...

Read More

Jan-24-2024