没有名为“ admin”的角色。拉拉韦尔

时间:2020-03-16 17:13:33

标签: laravel spatie laravel-permission

我使用此软件包:

https://github.com/spatie/laravel-permission/tree/v2

代码:

     $user=User::find(2);
    $user->assignRole('admin');

并且当我为用户分配管理员角色时,我正在处理此错误

没有名为admin的角色。Spatie\ Permission \ Exceptions \ RoleDoesNotExist

这是我在auth.php中的默认防护:

    <?php

return [

    'defaults' => [
        'guard' => 'api',
        'passwords' => 'users',
    ],


    'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],

        'api' => [
            'driver' => 'token',
            'provider' => 'users',
            'hash' => false,
        ],
    ],

这是我的角色表:

enter image description here

这是我的role_has_permission表

enter image description here

这是我的权限表:

enter image description here

3 个答案:

答案 0 :(得分:6)

只需将此受保护的属性添加到用户模型(或用于分配权限和角色的任何模型)中即可。

protected $guard_name = 'api';

答案 1 :(得分:0)

将此添加到您的用户模型

use Spatie\Permission\Traits\HasRoles;

在用户模型类中

use HasRoles;

这是一个reference

Complete example

答案 2 :(得分:0)

将以下内容之一添加到您的 User 模型:

public $guard_name = 'api';

或者:

public function guardName()
{
  return 'api';
}