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

问题描述 投票:0回答:2

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

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

谢谢你。

编辑:

关系如下;

用户属于ToMany组 组属于多个用户

组属于多个权限 权限属于ToMany Group

laravel model permissions relationship rbac
2个回答
2
投票

根据您的

Pivot Tables
关系如下:

Group <-> User
many-to-many

Group <-> Permission
many-to-many

我如何最有效地通过 用户模型

由于

User
Permission
模型没有直接关系,但是您可以通过
Group
模型获得所有权限:

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

这将为您提供

User
模型以及所有
Group
模型和嵌套
Permission
模型,以便获得权限,您可以尝试:

// 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
模型的集合)。

还有其他方法(使用联接),但具体取决于您的需要。


0
投票

最简单的方法之一是使用这个包: rbac-laravel

© www.soinside.com 2019 - 2024. All rights reserved.