Reputation:
If I'm having 2 tables with n:n relationship, users and roles. How can I get all roles for all users in laravel.
example:
John | Jack |
---|---|
role1 | role1 |
role2 | role3 |
Upvotes: 1
Views: 368
Reputation: 118
Don't forget to use with() to reduce N+1 problem. do simple foreach and fetch the name.
// Get all users with assigned role
$users = \App\User::query()->with('roles')->get();
foreach ($users as $user) {
echo $user->name . '<br/>';
foreach ($user->roles as $role) {
echo $role->name . '<br/>';
}
}
// Get all user of a specific role
$users = \App\User::query()->whereHas('roles', function ($query) {
$query->where('name', 'isAdmin');
})->get();
foreach ($users as $user) {
echo $user->name . '<br/>';
foreach ($user->roles as $role) {
echo $role->name . '<br/>';
}
}
Upvotes: 2
Reputation: 304
Use spatie packages https://spatie.be/docs/laravel-permission/v5/introduction This help you to create role and permissions.
Upvotes: 0