Laravel Spatie-在新字段不起作用的情况下分配角色

时间:2019-01-05 07:07:07

标签: laravel laravel-5.7 spatie

我正在使用Laravel Spatie 2.28版本

当用户创建用户时,我必须给用户分配一些角色,而不是spatie表中的普通字段。我的 model_has_roles 表结构是

  1. role_id
  2. model_type
  3. 说明
  4. 开始日期
  5. 结束日期
  6. model_id

我的客户要求角色有效期,以便我在 model_has_roles 表中的开始日期结束日期

当我在创建用户后尝试分配角色时,如下所示,该用户得到错误

$user->assignRole([
      'role_id'=>request('roles')[$i],
      'start_date' =>request('roleStartDate')[$i],
      'end_date' =>request('roleEndDate')[$i],
    ]);
  

消息:“没有名为05/01/2019的角色。”

assignRole仅接受角色名称作为参数。

然后我尝试创建另一个ModelModelHasRole.php并插入如下角色,

ModelHasRole.php

 protected $attributes = [
   'model_type' => 'App\Models\User',
 ];

控制器

 ModelHasRole::create([
      'role_id' =>request('roles')[$i],
      'description' =>request('roleDesc')[$i],
      'start_date' =>request('roleStartDate')[$i],
      'end_date' =>request('roleEndDate')[$i],
      'model_id' =>$user->user_id,
    ]);

在这种情况下,它可以正常工作/插入,但是当我使用hasRole检查权限时,它返回false。

使用

检查用户的角色时
auth()->user()->roles; // Manually written relationship in User.php 

获得角色作用的结果,但是

dd(auth()->user()->hasRole('Accounts Only'));

它越来越假。

0 个答案:

没有答案