我试图找出是否有一种简单的方法可以让所有具有给定权限的用户。所以我通过角色使用权限,这意味着我与它们没有直接关系,所以我需要检查用户模型“角色”的关系,然后检查与每个用户角色关联的权限。
带数据集的SqlFiddle - http://sqlfiddle.com/#!9/2fe35d
例如,任务是获取具有id 2和3权限的用户。
发布于 2021-01-27 15:31:58
如果您只需要用户列表,可以使用下面的查询:
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) 发布于 2021-01-27 15:29:26
请查看以下查询,谢谢
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)发布于 2021-01-27 15:32:42
我没有在文档中找到它,但是有一个许可范围应该给您直接或通过一个角色拥有权限的所有用户:
public function scopePermission(Builder $query, $permissions): Builder你可以这样使用它:
User::permission([2, 3])->get();https://stackoverflow.com/questions/65921798
复制相似问题