在Zizaco/entrust的Laravel Entrust中,如何设置与Eloquent的Entrust类关系,以便您可以获得角色所具有的权限列表:
// get admin role
$adminRole = Role::find(1);
// get the permission of the admin role
$adminRolePermissions = $adminRole->permissions();
我尝试将以下Eloquent关系添加到Role
类:
class Role class {
public function permissions()
{
return $this->hasManyThrough('App\Permission', 'App\PermissionRole', 'role_id', 'permission_id');
}
}
有了这个,当我得到一个角色的实例并尝试获得它的权限时:
$adminRolePermissions = $adminRole->permission();
发生此错误:
SQLSTATE [42S22]:找不到列:1054未知列 ' permission_role.id'在' on条款' (SQL:选择
permissions
。*, 来自permission_role
内部联接的role_id
。permissions
permission_roles
上的permission_role
。id
=permissions
。permission_id
其中permission_role
。role_id
= 1)
当然,我已经为PermissionRole
表创建了以下模型:permission_role
。
答案 0 :(得分:0)
permission_role.id无效。由于“ Eloquent ORM Relationships”,您的表Permission_role应该具有默认情况下名为“ permission_id”和“ role_id”的列。 可能是您覆盖了模型的主键名称。 请检查Config.entrust文件是否具有与模型相同的属性。