首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Spatie Laravel权限获得具有权限的用户

Spatie Laravel权限获得具有权限的用户
EN

Stack Overflow用户
提问于 2021-01-27 15:02:47
回答 4查看 2.9K关注 0票数 0

我试图找出是否有一种简单的方法可以让所有具有给定权限的用户。所以我通过角色使用权限,这意味着我与它们没有直接关系,所以我需要检查用户模型“角色”的关系,然后检查与每个用户角色关联的权限。

带数据集的SqlFiddle - http://sqlfiddle.com/#!9/2fe35d

例如,任务是获取具有id 2和3权限的用户。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2021-01-27 15:31:58

如果您只需要用户列表,可以使用下面的查询:

代码语言:javascript
复制
select distinct u.id , u.name username
from users u
join user_has_role ur
   on u.id = ur.user_id
join role_has_permissions rp
   on ur.role_id = rp.role_id
where  rp.permission_id in ( 2, 3) 
票数 2
EN

Stack Overflow用户

发布于 2021-01-27 15:29:26

请查看以下查询,谢谢

代码语言:javascript
复制
select U.id, U.name AS UserName, R.name AS RoleName,P.id As PermissionID, P.name AS PermissionName
FROM users U 
INNER JOIN user_has_role ur on U.id = ur.user_id
INNER JOIN roles R on ur.role_id = R.id
INNER JOIN role_has_permissions rp on R.id = rp.role_id
INNER JOIN permissions P on rp.Permission_id = P.id
WHERE P.id in (2,3)
票数 1
EN

Stack Overflow用户

发布于 2021-01-27 15:32:42

我没有在文档中找到它,但是有一个许可范围应该给您直接或通过一个角色拥有权限的所有用户:

代码语言:javascript
复制
public function scopePermission(Builder $query, $permissions): Builder

你可以这样使用它:

代码语言:javascript
复制
User::permission([2, 3])->get();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65921798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档