我如何获得所有用户的角色,其中角色= 'admin'用雄辩配合嘱托


How do I get all Users with Roles where role = 'admin' using eloquent along with Entrust?

我使用的是Laravel委托包https://github.com/Zizaco/entrust我想让所有的用户和他们的角色像这样

name | role
Ryan | admin
Megan | admin

表结构
users 
id,name,email,password
roles, 
id,name
role_user (pivot table)
id,user_id

我试过了,但是不工作

$users = User::with('roles')->where('roles.name','=','admin')->get();
误差

Column not found: 1054 Unknown column 'roles.name' in 'where clause' (SQL: select * from users where roles.name = admin)

我既不想使用RAW查询也不想使用这个

$users = DB::table('users')->select('users.name as username', 'role.name as role')->with('roles')->join('roles', 'roles.user_id', '=', 'users.id')->where('roles.name', 'admin')->get();

还有别的办法吗?

使用whereHas

$users = User::whereHas('roles', function($q)
{
    $q->where('name', 'admin');
})->get();

使用这个,它将检索所有具有admin角色的用户

$users = User::with(['roles' => function($query)
{
    $query->where('name','=','admin');
}])->get();