如何获取所有角色及其相关权限

Posted

技术标签:

【中文标题】如何获取所有角色及其相关权限【英文标题】:How to get all roles and associated permissions to them 【发布时间】:2021-11-24 10:33:53 【问题描述】:

我正在尝试获取所有角色,无论他们是否被分配了一些权限,如果被分配了权限,那么我想使用 eloquent 将它们显示在每个角色的前面。

我正在尝试的查询

    $roles = role::select('roles.*','role_permissions.permission_id')
    ->leftjoin('role_permissions', 'roles.id', '=', 'role_permissions.role_id')
    ->get();

此查询的问题是,如果为角色分配了多个权限,它会重复该角色。 例如:

它以这个顺序显示结果(这只是为了快速理解)。 我怎样才能以这种方式获得['role_id' => 1, 'permission_id' => [1,2] ] 雄辩的结果。 榜样

public function permissions()

  return $this->belongsToMany(\App\Models\permission::class, 'role_permissions');
 

权限模型

public function roles()

  return $this->belongsToMany(\App\Models\Role::class, 'role_permissions');
  

【问题讨论】:

【参考方案1】:

你可以使用收集方法:

Role::with('role_permissions')->all()->map(function(Role $role)
  return $role->permission_ids = $role->permissions->pluck('id');
)

或者您可以在角色模型中使用自定义 getter:

public function getPermissionIdsAttribute()

  return $this->permissions->pluck('id');

$role->permission_ids;

【讨论】:

以上是关于如何获取所有角色及其相关权限的主要内容,如果未能解决你的问题,请参考以下文章

如何检查分配给模式、oracle 数据库中角色的对象的权限(DDL、DML、DCL)?

php orm 学说如何获取对象及其相关连接

ASP.NET Core 1.1 获取所有用户及其角色

如何查看oracle用户具有的权限和角色

如何查看oracle用户具有的权限和角色?

谷粒学院权限管理模块