我如何在Laravel中查询具有多个直通关系

我如何在Laravel中查询具有多个直通关系,laravel,laravel-5,Laravel,Laravel 5,在Laravel中,有哪些方法可以查询这种类型的关系 表: 使用者 角色 特权 其中: 每个角色都有一组权限 每个用户可以属于多个角色 用户通过角色拥有许多权限 用户和角色通过中间表进行关联。因此,角色表中没有user_id列 实际上,我正在尝试做一些类似的事情: User()->Roles()->Privileges()->get() 但我不确定拉威尔是怎么做到的 数据库结构更新: 在用户模型中,您将具有以下关系: public function privileg

在Laravel中,有哪些方法可以查询这种类型的关系

表:

  • 使用者
  • 角色
  • 特权
其中:

  • 每个角色都有一组权限
  • 每个用户可以属于多个角色
  • 用户通过角色拥有许多权限
  • 用户和角色通过中间表进行关联。因此,角色表中没有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;