user18392765
user18392765

Reputation:

How to get the roles of multiple users in laravel?

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

Answers (3)

SaaberDev
SaaberDev

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

zourite
zourite

Reputation: 304

Use spatie packages https://spatie.be/docs/laravel-permission/v5/introduction This help you to create role and permissions.

Upvotes: 0

Reda Taha
Reda Taha

Reputation: 123

By foreach

foreach($users as $user) {
    $user->roles;
}

Upvotes: 0

Related Questions