@dedrick
To join two tables with a pivot table in Laravel, you can use the belongsToMany relationship in your Eloquent models. Here's how you can achieve this:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
// User model
class User extends Model
{
public function roles()
{
return $this->belongsToMany(Role::class, 'user_roles', 'user_id', 'role_id');
}
}
// Role model
class Role extends Model
{
public function users()
{
return $this->belongsToMany(User::class, 'user_roles', 'role_id', 'user_id');
}
}
|
1
|
php artisan make:migration create_user_roles_table |
In the migration file, define the schema for the pivot table:
1 2 3 4 5 6 7 8 9 |
Schema::create('user_roles', function (Blueprint $table) {
$table->unsignedBigInteger('user_id');
$table->unsignedBigInteger('role_id');
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
$table->foreign('role_id')->references('id')->on('roles')->onDelete('cascade');
$table->primary(['user_id', 'role_id']);
});
|
1 2 3 4 5 |
$user = User::find(1);
foreach ($user->roles as $role) {
echo $role->name;
}
|
This will fetch the roles associated with the user using the pivot table user_roles and display their names.