在Laravel中查询此类关系有哪些方法
表:
其中:
实际上我正在尝试做类似的事情:
User()->Roles()->Privileges()->get()
但是我不确定这样做的laravel方式
USERS
id
name
email
ROLES
id
role
USERS_ROLES
id
user_id (foreign key)
role_id (foreign key)
PRIVILEGES
id
role_id (foreign key)
privilege
USER belongsToMany Roles
ROLE belongsToMany Users
USER has many privileges through ROLES
答案 0 :(得分:1)
问题是您尝试将user
与privileges
方法联系起来hasManyThrough()
。
为此,privileges
必须拥有多个角色,但属于许多角色。这里你需要的是belongsToManyThrough
关系,默认情况下Eloquent不提供。
所以,你有两个选择:
belongsToThrough()
关系。我没有使用我链接过的软件包,但我相信它能够实现它所说的内容。
答案 1 :(得分:0)
在您的用户模型中,您将拥有以下关系:
public function privileges()
{
return $this->hasManyThrough('Privilege', 'Role');
}
然后在您的代码中,您可以通过以下方式访问用户的权限:
$privileges = $user->privileges;