首页 文章

Laravel RBAC(基于角色的访问控制)模型关系

提问于
浏览
0

我正在制作自己的基于角色的访问控制实现,并需要一些关于关系问题的帮助 .

我有一个用户,组和权限模型,用户/组之间和组/权限之间有一个数据透视表 . 如何通过用户模型最有效地检索权限模型?

谢谢 .

编辑:

关系如下;

用户所属的ToMany Group Group属于ToMany User

Group belongsToMany权限权限属于ToMany Group

1 回答

  • 2

    根据你的 Pivot Tables 关系如下:

    Group <-> Usermany-to-many

    Group <-> Permissionmany-to-many

    我如何通过用户模型最有效地检索权限模型

    由于 UserPermission 模型之间没有直接关系,但您可以通过 Group 模型获得所有权限:

    $user = User::with('groups.permissions')->find(1);
    

    这将为您提供包含所有 Group 模型和嵌套 Permission 模型的 User 模型,以便获得您可能尝试的权限:

    // Get a collection
    $permissionsOfFirstGroup = $user->groups->first()->permissions;
    
    // Get a collection
    $permissionsOfSecondGroup = $user->groups->get(1)->permissions;
    

    要获得所有组的所有权限,您可以尝试这样做:

    $permissions = $user->groups->fetch('permissions');
    

    这将返回一个 Illuminate\Database\Eloquent\Collection 对象( Permission 模型的集合) .

    还有其他方法(使用连接),但取决于您的需要如何执行 .

相关问题