我有一个用户表:
id | name
我有一个角色表:
id | role
我有一个user_role数据透视表:
user_id | role_id
我有权限表:
id | permission
我有一个role_permissions数据透视表:
role_id | permission_id
用户属于许多角色。
角色属于许多用户。
权限属于许多角色。
如何查询权限表,提供权限和用户ID。我基本上想要查找用户是否具有特定权限。
到目前为止,我有:
$data = Permission::whereHas('roles', function($q){
//do I need another whereHas here linking roles and users?
})->where('permission', 'edit')->get();
答案 0 :(得分:0)
最好的方法是加入表格。目前在框架中没有很好的方法来实现这种链式关系。
Permission::query()
->join('permission_role', 'permission_role.role_id', '=', 'permissions.id')
->join('roles', 'roles.id', '=', 'permission_role.role_id')
->join('role_user', 'role_user.user_id', '=', 'roles.id')
->join('users', 'users.id', '=', 'role_user.user_id')
->where('users.whatever', '=', 'something')
->where('permissions.permission', '=', 'edit')
->get();