我如何在Laravel中查询具有多个直通关系
在Laravel中,有哪些方法可以查询这种类型的关系 表:我如何在Laravel中查询具有多个直通关系,laravel,laravel-5,Laravel,Laravel 5,在Laravel中,有哪些方法可以查询这种类型的关系 表: 使用者 角色 特权 其中: 每个角色都有一组权限 每个用户可以属于多个角色 用户通过角色拥有许多权限 用户和角色通过中间表进行关联。因此,角色表中没有user_id列 实际上,我正在尝试做一些类似的事情: User()->Roles()->Privileges()->get() 但我不确定拉威尔是怎么做到的 数据库结构更新: 在用户模型中,您将具有以下关系: public function privileg
- 使用者
- 角色
- 特权
- 每个角色都有一组权限
- 每个用户可以属于多个角色
- 用户通过角色拥有许多权限
- 用户和角色通过中间表进行关联。因此,角色表中没有user_id列
User()->Roles()->Privileges()->get()
但我不确定拉威尔是怎么做到的
数据库结构更新:
在用户模型中,您将具有以下关系:
public function privileges()
{
return $this->hasManyThrough('Privilege', 'Role');
}
然后,在代码中,您可以通过以下方式访问用户的权限:
$privileges = $user->privileges;
问题是您试图使用
hasManyThrough()
方法将用户
与特权
关联起来
为此,特权必须具有许多角色,但它们属于许多角色。这里您需要的是一个belongTomanyThrough
关系,默认情况下,该关系不适用于Eloquent
因此,您有两种选择:
自己创建查询
使用类似的包,它提供belongsToThrough()
关系
我没有使用我链接的包,但我相信它会按照它所说的做。我尝试了这一点,它生成的查询要求在角色表上有一个user\u id列。用户和角色通过一个中间表进行关联,因此角色表上没有用户id,而只有中间关系是一个hasOne
/hasMany
。在这种情况下,它是一个属于一个角色
,因此的许多操作都不起作用。假设我应该更彻底地阅读这个问题。你能提供表结构,特别是它们的外键吗?我想我需要自己使用查询生成器来构造查询,但我希望有一种雄辩的方法来实现这一点。这与文档中描述的示例相同。你查过了吗@CanCelik它不是一对一的示例,原因如下:“我尝试了这个,它生成的查询要求角色表上有一个user\u id列。用户和角色通过中间表关联,因此角色表上没有user\u id。”换句话说,我认为文档中的示例不适用于多对多关系扫描您发布的代码?
$privileges = $user->privileges;