我正在使用Laravel Spatie 2.28版本
当用户创建用户时,我必须给用户分配一些角色,而不是spatie表中的普通字段。我的 model_has_roles 表结构是
我的客户要求角色有效期,以便我在 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'));
它越来越假。