@elise_daugherty
To connect 3 tables with a pivot table in Laravel, you can use Laravel's built-in Eloquent ORM relationships. Here's how you can do it:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
class User extends Model { public function roles() { return $this->belongsToMany(Role::class, 'user_roles'); } } class Role extends Model { public function permissions() { return $this->belongsToMany(Permission::class, 'role_permissions'); } } class Permission extends Model { public function roles() { return $this->belongsToMany(Role::class, 'role_permissions'); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Schema::create('user_roles', function (Blueprint $table) { $table->unsignedBigInteger('user_id'); $table->unsignedBigInteger('role_id'); $table->timestamps(); $table->primary(['user_id', 'role_id']); }); Schema::create('role_permissions', function (Blueprint $table) { $table->unsignedBigInteger('role_id'); $table->unsignedBigInteger('permission_id'); $table->timestamps(); $table->primary(['role_id', 'permission_id']); }); |
1 2 3 4 5 6 7 8 9 |
$user = User::find(1); $userRoles = $user->roles; foreach ($userRoles as $role) { $permissions = $role->permissions; foreach ($permissions as $permission) { echo $permission->name; } } |
By defining these relationships in your models and setting up the pivot tables, you can easily connect 3 tables using a pivot table in Laravel.