当前位置: 首页 > 知识库问答 >
问题:

筛选具有多个角色的用户Laravel

卢黎昕
2023-03-14

我有3个表:User、Role和具有Role\u id和User\u id的透视表RoleUser。

对于关系在我的模型我这样做:

榜样:

   public function users() {
    return $this->belongsToMany('App\Models\User')->using(RoleUser::class);
}

用户模型

 public function roles() {
    return $this->hasMany('App\Models\Role')->using(RoleUser::class);
}

我为filter by one角色做了这项工作,效果很好:

 $roles = Role::find($request->get('role_id'))->first();

 return $roles->users;

但是现在我需要通过许多角色来过滤我的用户。

我将从我的前端发送一个数组,其中包含角色的id。

事实上,我可以得到如下角色

$roles = Role::whereIn('id', $request->get('role_id'))->get();


 $roles = [{"id":2,"name":"Admin","description":"blabla","created_at":"2018-12-04 09:48:56","updated_at":"2021-04-23 14:53:15"},{"id":3,"name":"developper","description":"blabla","created_at":"2018-12-04 09:51:31","updated_at":"2021-04-23 14:53:15"}]

但我不知道如何才能获得具有此角色的用户。

共有1个答案

夏侯彬郁
2023-03-14

您需要遍历集合,获取每个角色的用户,并将其返回到一个数组中,如下所示:

$roles = Role::whereIn('id', $request->get('role_id'))->get();
return $roles->map->users->flatten();

或者你反过来做:

return User::whereHas('roles', function($q) use($request) {
    $q->whereIn('id', $request->get('role_id'));
})->get();
 类似资料:
  • 我想在laravel中创建一个RBAC系统,其中一个用户可以属于多个角色,每个角色可以有多个权限。中间件应在继续请求之前检查用户是否具有特定权限(在其任何角色内)。 我能够实施一个案例,其中 用户属于一个具有多个权限的角色 我需要实现具有多个权限的多个角色的用户。有什么指点吗?

  • 问题内容: 我有2张桌子: 表: 表: 现在,我想获取所有位置并过滤两个属性: 我正在尝试构造一些查询,如下所示: …但是仍然无法得到我所需要的。 问题答案: 经过几个小时的合并和尝试,我终于做到了: 我太接近了,因此将所有过滤条件都移至。

  • 我在一个有这种结构的拉威尔项目中工作 用户:id | first | u name |。。。 角色:id|name 分配的角色:id |用户id |角色id 我认为这是很明显的:p 用户模型 角色模型 我正在寻找一种方法来获取所有具有指定角色(在本例中为“教师”)的用户。我试过这个: 但这总是返回一个包含所有用户的数组。 有人知道为什么会这样吗?谢谢

  • 问题内容: 我想为具有以下角色之一(ROLE1或ROLE2)的用户定义某些页面的访问权限 我正在尝试在我的spring security xml文件中进行如下配置: 我尝试了各种方法,例如: 等等 但似乎没有任何效果。 我一直在例外 要么 应该如何配置? 谢谢 问题答案: 问题是我配置了自定义 ,但没有通过其中一名选民。 通过添加到bean中来解决。

  • 问题内容: 与多个用户/设备一起使用Apple的新ARKit的最佳方法是什么? 似乎每个设备都可以分别了解自己的场景。到目前为止,我最好的猜测是使用原始特征点位置,并尝试在设备之间进行匹配,以将不同的视图点粘合在一起,因为ARKit没有提供任何绝对参考引用。 ===编辑1,我尝试过的事情=== 1)特征点 我一直在玩耍并暴露了原始特征点,现在我确信在它们的当前状态下它们是死胡同: 它们不是原始特征

  • 要检查多个角色是否具有方法级访问权限 我已使用@PreAuthorize annotation检查角色 @preAuthorize("hasRole(\""AuthoritiesContain. USER "\",)" ) 如何使用@PreAuthorize注释检查多个角色?