【问题标题】:There is no role in id '#' in Spatie Laravel JetstreamSpatie Laravel Jetstream 中的 id '#' 中没有任何角色
【发布时间】:2021-12-05 20:50:29
【问题描述】:

我正在尝试创建一个使用 Jetstream(整页 Livewire 组件)的 Laravel 项目,并且我正在尝试使用 spatie/laravel-permission 获取权限。我总是得到错误

Spatie\Permission\Exceptions\RoleDoesNotExist 没有 ID 为 2 的角色。

我有三个角色

1=Super Admin 
2=Admin 
3=User

谁能帮我解决这个问题?

用户 Livewire 组件

use Livewire\Component;
use App\Models\User;
use App\Models\Role;

class Users extends Component
{
    public $userId;
    public $userData;

    public function addRole()
    {
        $this->userData = User::find($this->userId);
        $this->userData->assignRole(2);
    }
}

【问题讨论】:

  • Spatie 会缓存它的数据,所以如果不刷新缓存就直接向数据库插入数据,它不会识别角色。尝试运行php artisan permission:cache-reset。如果这不起作用,您会为这些角色使用哪些警卫?

标签: php laravel laravel-livewire jetstream laravel-permission


【解决方案1】:

清除 Spatie 缓存

php artisan cache:forget spatie.permission.cache 

然后

php artisan clear:cache

如果不起作用,请将此代码添加到模型中

protected $guard_name = 'api';

【讨论】:

    猜你喜欢
    • 2022-01-21
    • 1970-01-01
    • 2021-08-27
    • 2022-01-07
    • 2021-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-30
    相关资源
    最近更新 更多