Php 没有名为“Admin”的角色`

Php 没有名为“Admin”的角色`,php,laravel,roles,laravel-8,spatie,Php,Laravel,Roles,Laravel 8,Spatie,我尝试使用Spatial包和laracasts/flash包创建角色和权限。我遵循这个教程 但当我想迁移并授予权限时,我遇到了以下错误: ?[41;1m空间\权限\例外\角色不存在?[49;22m ?[39;1m没有名为Admin?[39;22m]的角色 位于?[32mC:\xampp\htdocs\larashop\vendor\spatie\laravel permission\src\Exceptions\RoleDoesNotExist.php?[39m:?[32m11?[39m 7–类

我尝试使用Spatial包和laracasts/flash包创建角色和权限。我遵循这个教程 但当我想迁移并授予权限时,我遇到了以下错误:

?[41;1m空间\权限\例外\角色不存在?[49;22m

?[39;1m没有名为
Admin
?[39;22m]的角色

位于?[32mC:\xampp\htdocs\larashop\vendor\spatie\laravel permission\src\Exceptions\RoleDoesNotExist.php?[39m:?[32m11?[39m 7–类RoleDesNotexist扩展了InvalidArgumentException 8â–• { 9–名为的公共静态函数(字符串$roleName) 10â–• { –žœ11–返回新静态(“没有名为
{$roleName}
的角色”); 12â–• } 13â–• 14–带ID的公共静态函数(int$roleId) 15–15{

?[33m1?[39m?[39;1mC:\xampp\htdocs\larashop\vendor\spatie\laravel permission\src\Models\Role.php?[39;22m:[39;1m89?[39;22m] [37m空间\权限\例外\RoleDesNotexist::命名(“管理员”)?[39m

?[33m2?[39m?[39;1mC:\xampp\htdocs\larashop\vendor\spatie\laravel permission\src\Traits\HasRoles.php?[39;22m:[39;1m276?[39;22m] [37m空间\权限\模型\角色::findByName(“管理员”、“api”)?[39m

我已经尝试为我的用户模型提供受保护的
$guard\u name='api';
并尝试将auth.php文件

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

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

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

这是我的用户模型

<?php

namespace App\Models;

use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;

use Spatie\Permission\Traits\HasRoles;

class User extends Authenticatable
{
    use HasFactory, Notifiable, HasRoles;

    protected $guard_name ='api';

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name',
        'email',
        'password',
    ];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        'password',
        'remember_token',
    ];

    /**
     * The attributes that should be cast to native types.
     *
     * @var array
     */
    protected $casts = [
        'email_verified_at' => 'datetime',
    ];

    public function products()
    {
        return $this->hasMany('App\Models\Product');
    }
}


<?php

namespace Database\Seeders;

use App\Models\Permission;
use App\Models\Role;
use App\Models\User;

use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
    /**
     * Seed the application's database.
     *
     * @return void
     */
    public function run()
    {
        // Ask for db migration refresh, default is no
        if ($this->command->confirm('Do you wish to refresh migration before seeding, it will clear all old data ?')) {
            // Call the php artisan migrate:refresh
            $this->command->call('migrate:refresh');
            $this->command->warn("Data cleared, starting from blank database.");
        }

        // Seed the default permissions
        $permissions = Permission::defaultPermissions();

        foreach ($permissions as $perms) {
            Permission::firstOrCreate(['name' => $perms]);
        }

        $this->command->info('Default Permissions added.');

        // Confirm roles needed
        if ($this->command->confirm('Create Roles for user, default is admin and user? [y|N]', true)) {

            // Ask for roles from input
            $input_roles = $this->command->ask('Enter roles in comma separate format.', 'Admin,User');

            // Explode roles
            $roles_array = explode(',', $input_roles);

            // add roles
            foreach($roles_array as $role) {
                $role = Role::firstOrCreate(['name' => trim($role)]);

                if( $role->name == 'Admin' ) {
                    // assign all permissions
                    $role->syncPermissions(Permission::all());
                    $this->command->info('Admin granted all the permissions');
                } else {
                    // for others by default only read access
                    $role->syncPermissions(Permission::where('name', 'LIKE', 'view_%')->get());
                }

                // create one user for each role
                $this->createUser($role);
            }

            $this->command->info('Roles ' . $input_roles . ' added successfully');

        } else {
            Role::firstOrCreate(['name' => 'User']);
            $this->command->info('Added only default user role.');
        }
    }

     /**
     * Create a user with given role
     *
     * @param $role
     */
    private function createUser($role)
    {
        $user = User::factory()->create();
        $user->assignRole($role->name);

        if( $role->name == 'Admin' ) {
            $this->command->info('Here is your admin details to login:');
            $this->command->warn($user->email);
            $this->command->warn('Password is "password"');
        }
    }
}