【问题标题】:Laravel : Get permissions list for a user through roles table with belongtomanyLaravel:通过角色表获取用户的权限列表
【发布时间】:2020-06-07 05:24:02
【问题描述】:

我有五个表来设置三个表之间的关系是: + 用户 + 角色 + 权限

用户和角色的关系是many to many,通过数据透视表是“user_role

角色和权限的关系也是many to many,通过数据透视表是“role_permission

现在我想显示列表用户,但我想将他们的权限带到此列表中。我该怎么做?

名称电子邮件角色权限

aaa aa@gmail.com 版主,客户create-post, update-post, delete-post

【问题讨论】:

  • 你想直接访问用户权限吗?或者您可以通过角色访问它?
  • @raminashrafimanesh 我使用角色访问。但是现在我想要列表用户的角色是版主,但我不知道如何写条件

标签: laravel


【解决方案1】:

我最近通过这种方式完成了这个场景

用户模型

public function roles()
{
    return $this->belongsToMany(Role::class,UserRole::class);
}

榜样

public function permissions()
{
    return $this->belongsToMany(Permission::class,RolePermission::class);
}

现在,当您获得所有用户时,您需要急切地加载您的关系

public function index()
{
    $users = User::with('roles.permissions')->get();
               OR
    $users = User::with(['roles' => function($query){
                 $query->with('permissions');
             }])->get();
    return view('view_name',compact('users'));
}

注意:你也可以使用 laravel 集合来重新格式化你的角色和权限集合,而不是使用多个循环。但我想你明白了

【讨论】:

  • 嗨@Akhtar:非常感谢。我也找到了。但是你知道如何通过角色 id 过滤用户吗?
  • @HaiTien 欢迎,这取决于场景,例如如果您有一个过滤表单并且您只选择角色ID,那么您需要使用该表单的获取请求当然您会知道它。接下来您可以在用户相关角色中执行like 查询,这意味着在关系中。
猜你喜欢
  • 2017-10-07
  • 1970-01-01
  • 2021-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-24
  • 2020-01-17
  • 1970-01-01
相关资源
最近更新 更多