首页 > 解决方案 > 如何检索与多个角色关联的用户,例如 ["role1","role2"...]

问题描述

我有作为 belongsToMany 的用户和角色关系。我现在想让所有用户按名称拥有多个角色。

我试过了,

 $role_ids = [1,2];
 $users = User::whereHas('roles' , function ($query) use($role_ids) {
            $query->whereIn('roles.id', $role_ids);
        })->get();

但是这种方法为我提供了与两个或任何一个角色相关联的用户,这不是我所期望的

标签: phplaraveleloquentroles

解决方案


您必须为此添加多个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();

推荐阅读