使用Laravel雄辩的中间关系过滤数据透视表数据

时间:2018-12-31 17:44:18

标签: php laravel eloquent

我正在使用laravel中的访问控制级别(ACL)。这里是两个pivot表,一个是role_user,它代表each users roles,另一个是permission_role,它代表each roles permissions。现在我想从permission_role模型中获取User数据透视表数据。

我的代码示例。

In User Model

public function roles()
{
    return $this->belongsToMany(Role::class);
}

In Role Model

public function users()
{
    return $this->belongsToMany(User::class);
}

public function permissions()
{
    return $this->belongsToMany(Permission::class);
}
In Permission Model

public function roles()
{
    return $this->belongsToMany(Role::class);
}

我正尝试这种方式:-

$user->roles->with('permissions')->get();
  

它显示BadMethodException。

我该如何解决这个问题并获得期望输出。

1 个答案:

答案 0 :(得分:1)

如果您希望加载嵌套关系,可以使用点分隔的语法来完成,例如:

User::with('roles.permissions')->find($id);

如果已经实例化了User模型,则可以改用load()方法(延迟加载):

$user->load('roles.permissions');

Eager Loading Documentation