Spatie\Permission\Exceptions\PermissionAlreadyExists :Guard `web` 的 `edit listing` 权限已经存在

dav*_*ara 1 laravel spatie

我已经克隆了市场仓库并进行了适当的配置。当我使用时,php artisan db:seed我收到此错误

david@david-Lenovo-G50-30:~/projects/marketplacekit$ php artisan db:seed
Seeding: UsersTableSeeder
Seeding: RolesAndPermissionsSeeder

Spatie\Permission\Exceptions\PermissionAlreadyExists  : A `edit listing` permission already exists for guard `web`.

at /home/david/projects/marketplacekit/vendor/spatie/laravel-permission/src/Exceptions/PermissionAlreadyExists.php:11
 7| class PermissionAlreadyExists extends InvalidArgumentException
 8| {
 9|     public static function create(string $permissionName, string $guardName)
10|     {    
11|         return new static("A `{$permissionName}` permission already exists for guard`{$guardName}`.");
12|     }
13| }
14| 

  Exception trace:

1   Spatie\Permission\Exceptions\PermissionAlreadyExists::create("edit listing", "web")
  /home/david/projects/marketplacekit/vendor/spatie/laravel-permission/src/Models/Permission.php:42

2   Spatie\Permission\Models\Permission::create(["edit listing", "web"])
  /home/david/projects/marketplacekit/database/seeds/RolesAndPermissionsSeeder.php:20

Please use the argument -v to see more details.
Run Code Online (Sandbox Code Playgroud)

角色和权限Seeder.php

    public function run(){

    //Reset cached roles and permissions
    app()['cache']->forget('spatie.permission.cache');

    //create permissions
    Permission::create(['name' => 'edit listing']);
    Permission::create(['name' => 'publish listing']);
    Permission::create(['name' => 'unpublish listing']);
    Permission::create(['name' => 'disable listing']);
    Permission::create(['name' => 'ban user']);

   // create roles and assign created permissions

    $role = Role::create(['name' => 'member']);

    $role = Role::create(['name' => 'editor']);
    $role->givePermissionTo(['edit listing', 'publish listing', 'unpublish listing']);

    $role = Role::create(['name' => 'moderator']);
    $role->givePermissionTo(['edit listing', 'disable listing', 'publish listing', 'unpublish listing', 'ban user']);

    $role = Role::create(['name' => 'admin']);
    $role->givePermissionTo(Permission::all());

    $user = \App\Models\User::first();
    $user->assignRole('admin');
}
Run Code Online (Sandbox Code Playgroud)

我已经以普通用户和 root 用户身份从缓存中清除了用户权限和角色,但它没有帮助。我做错了什么,我该怎么做?

tvs*_*s89 6

您可以使用 artisan 命令清除 spatie 权限缓存。

php artisan cache:forget spatie.permission.cache 
php artisan cache:clear
Run Code Online (Sandbox Code Playgroud)