如何为Laravel Zizaco建立雄辩关系/委托获得角色权限?

时间:2015-07-21 08:44:31

标签: eloquent laravel-5.1

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_idpermissions   permission_roles上的permission_roleid =   permissionspermission_id其中permission_rolerole_id = 1)

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

1 个答案:

答案 0 :(得分:0)

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