3

Zizaco/ entrust 的 Laravel Entrust 中,你如何设置 Entrust 与 Eloquent 的类关系,这样你就可以获得一个角色的权限列表,如下所示:

// 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 'on 子句'中的未知列'permission_role.id'(SQL:select permissions.*,. permission_rolefrom role_idinner permissionsjoin permission_roleson permission_role. id= permissions. permission_idwhere permission_role. role_id= 1)

当然,我已经创建了以下模型:PermissionRole用于permission_role表。

4

1 回答 1

0

permission_role.id 无效。由于“Eloquent ORM 关系”,您的表 permission_role 应该有默认名为“permission_id”和“role_id”的列。可能是您覆盖了模型的主键名称。请检查 Config.entrust 文件是否与您的模型具有相同的属性。

于 2019-06-27T12:41:56.517 回答