如何获取所有角色及其相关权限
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;
【讨论】:
以上是关于如何获取所有角色及其相关权限的主要内容,如果未能解决你的问题,请参考以下文章