Laravel 5雄辩的ORM-多对多到多对多

Laravel 5雄辩的ORM-多对多到多对多,laravel,eloquent,laravel-5,Laravel,Eloquent,Laravel 5,我正在开发一个相当复杂的用户系统,它需要能够向个人或整个组授予访问权限。例如,您可以授予Jane Doe访问权限以调节留言板,或授予通信组的所有用户发送电子邮件、调节留言板和发布事件的权限。添加时,分配给该组的所有用户都可以访问这些权限 与严格跟踪每个用户的个人权限不同,我希望首先根据用户是否属于包含该权限的组来授予对功能的访问权限。若他们并没有,那个么我想检查他们是否被授予了个人访问权限\用户透视表 基本上,我想要这样的东西: // 1 = Message Board Moderator //

我正在开发一个相当复杂的用户系统,它需要能够向个人或整个组授予访问权限。例如,您可以授予Jane Doe访问权限以调节留言板,或授予通信组的所有用户发送电子邮件、调节留言板和发布事件的权限。添加时,分配给该组的所有用户都可以访问这些权限

与严格跟踪每个用户的个人权限不同,我希望首先根据用户是否属于包含该权限的组来授予对功能的访问权限。若他们并没有,那个么我想检查他们是否被授予了个人访问权限\用户透视表

基本上,我想要这样的东西:

// 1 = Message Board Moderator
// See if any of the user's groups contain this privilege -
$hasAccess = Auth::user()->groups->privileges->contains(1); 
以下是我的表格结构:

使用者

组表:用户组

+-------------+------------------+------+-----+---------------------+----------------+
| Field       | Type             | Null | Key | Default             | Extra          |
+-------------+------------------+------+-----+---------------------+----------------+
| id          | int(10) unsigned | NO   | PRI | NULL                | auto_increment |
| name        | varchar(255)     | NO   |     | NULL                |                |
| slug        | varchar(255)     | NO   |     | NULL                |                |
| description | text             | NO   |     | NULL                |                |
| created_at  | timestamp        | NO   |     | 0000-00-00 00:00:00 |                |
| updated_at  | timestamp        | NO   |     | 0000-00-00 00:00:00 |                |
+-------------+------------------+------+-----+---------------------+----------------+
用户组透视表:用户组用户组

+---------------+------------------+------+-----+---------+-------+
| Field         | Type             | Null | Key | Default | Extra |
+---------------+------------------+------+-----+---------+-------+
| user_id       | int(10) unsigned | NO   | MUL | NULL    |       |
| user_group_id | int(10) unsigned | NO   | MUL | NULL    |       |
+---------------+------------------+------+-----+---------+-------+
+---------------+------------------+------+-----+---------+-------+
| Field         | Type             | Null | Key | Default | Extra |
+---------------+------------------+------+-----+---------+-------+
| privilege_id  | int(10) unsigned | NO   | MUL | NULL    |       |
| user_group_id | int(10) unsigned | NO   | MUL | NULL    |       |
+---------------+------------------+------+-----+---------+-------+
特权表:特权

+-------+------------------+------+-----+---------+----------------+
| Field | Type             | Null | Key | Default | Extra          |
+-------+------------------+------+-----+---------+----------------+
| id    | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| name  | varchar(255)     | NO   |     | NULL    |                |
| slug  | varchar(255)     | NO   |     | NULL    |                |
+-------+------------------+------+-----+---------+----------------+
特权用户组透视表:特权用户组

+---------------+------------------+------+-----+---------+-------+
| Field         | Type             | Null | Key | Default | Extra |
+---------------+------------------+------+-----+---------+-------+
| user_id       | int(10) unsigned | NO   | MUL | NULL    |       |
| user_group_id | int(10) unsigned | NO   | MUL | NULL    |       |
+---------------+------------------+------+-----+---------+-------+
+---------------+------------------+------+-----+---------+-------+
| Field         | Type             | Null | Key | Default | Extra |
+---------------+------------------+------+-----+---------+-------+
| privilege_id  | int(10) unsigned | NO   | MUL | NULL    |       |
| user_group_id | int(10) unsigned | NO   | MUL | NULL    |       |
+---------------+------------------+------+-----+---------+-------+

我很失望没有人在这里插话,但幸运的是我能在Laracasts.com上找到一些很好的帮助


我去了,这正是我所描述的。唯一缺少的部分是回答这样一个问题:这个用户是否有权限而不将用户分配到一个组,但这很容易用雄辩的语言来完成。委托所做的是回答这个问题:该用户是否有权通过组访问此权限?这就是我想要的。

你的问题是什么?这是一个简单的角色/权限系统,但我不知道你想要什么。我想我已经很清楚了,但这里有另一种说法。一个用户可以属于多个组。一个组可以有许多特权。我需要查看某个特定用户是否属于具有特定权限的组,一个组可以具有许多权限。那么,该用户是否有权通过其组之一(如果有的话)访问此权限?