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.
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');
});
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');
}
}
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;
$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 :
In this article, we will see laravel 9 socialite login with twitter account. Many websites provide different t...
Nov-12-2022
In this tutorial I will show you how to download youtube video using jquery or how to download youtube video from s...
Sep-27-2021
In this article, we will see how to send email using SendGrid in laravel 9. Laravel provides a clean API over...
Jul-25-2022
In this article, we will see how two-way data binding in angular 12. When you create a variable or property to data...
May-12-2022