How to get the roles of multiple users in laravel?

Viewed 49

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
3 Answers

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/>';
    }
}

By foreach

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