如何检索与多个角色关联的用户,如 ["role1"、"role2"...]
How to retrieve users associated with multiple roles like ["role1","role2"...]
我的用户和角色关系为 belongsToMany。
我现在想让所有用户按名称拥有多个角色。
我试过了,
$role_ids = [1,2];
$users = User::whereHas('roles' , function ($query) use($role_ids) {
$query->whereIn('roles.id', $role_ids);
})->get();
但是这种方法为我提供了与这两个角色或其中一个角色相关联的用户,这不是我所期望的
您必须为此添加多个 whereHas
:
$role_ids = [1,2];
$users = User::with('roles');
foreach($role_ids as $role){
$users->whereHas('roles', function($q) use ($role){
$q->where('roles.id', $role);
});
}
$users = $users->get();
我的用户和角色关系为 belongsToMany。 我现在想让所有用户按名称拥有多个角色。
我试过了,
$role_ids = [1,2];
$users = User::whereHas('roles' , function ($query) use($role_ids) {
$query->whereIn('roles.id', $role_ids);
})->get();
但是这种方法为我提供了与这两个角色或其中一个角色相关联的用户,这不是我所期望的
您必须为此添加多个 whereHas
:
$role_ids = [1,2];
$users = User::with('roles');
foreach($role_ids as $role){
$users->whereHas('roles', function($q) use ($role){
$q->where('roles.id', $role);
});
}
$users = $users->get();