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

时间:2014-06-19 07:42:22

标签: laravel model permissions relationship rbac

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

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

谢谢。

编辑:

关系如下;

用户belongsToMany Group Group belongsToMany User

组belongsToMany权限 权限属于ToMany Group

1 个答案:

答案 0 :(得分:2)

根据您的Pivot Tables关系如下:

Group <-> Usermany-to-many

Group <-> Permissionmany-to-many

  

如何通过最有效地检索Permission模型   用户模型

由于UserPermission模型之间没有直接关系,但您可以通过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模型的集合)。

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