首页 > 解决方案 > Laravel 8 包(角色和权限 jeremykenedy/laravel-roles)与 MongoDB UserTableSeeder 不工作

问题描述

我在 Laravel 8 中安装了角色和权限(jeremykenedy/laravel-roles)包 ,并且我使用了数据库 MongoDB。我在用户表播种器中有问题。桌上播种机的其余部分工作正常。我显示了以下屏幕截图错误

在此处输入图像描述

我在下面显示了用户表播种器代码


use Illuminate\Database\Seeder;
use jeremykenedy\LaravelRoles\Models\Permission;
use jeremykenedy\LaravelRoles\Models\Role;
use App\models\User;

class UserTableSeeder extends Seeder
{   
    public function run()
    {
        if (User::where('name', '=', 'Admin')->first() === null) {
            $adminRole = Role::where('slug', '=', 'admin')->first();
            $newUser = User::create([
                'name'              => 'Admin',
                'email'             => 'admin@gmail.com',    
                'password'          => bcrypt('12345678'),
                'role'              => 'admin'
            ]);
            $newUser->attachRole($adminRole);
            $permissions = Permission::all();
            foreach ($permissions as $permission) {
                $adminRole->attachPermission($permission);
            }
        }
    }
}

我已经在下面显示了用户模型代码


use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Notifications\Notifiable;
use jeremykenedy\LaravelRoles\Traits\HasRoleAndPermission;
use Laravel\Sanctum\HasApiTokens;
use Jenssegers\Mongodb\Eloquent\Model as Eloquent;
use Illuminate\Auth\Authenticatable;
use Illuminate\Auth\Passwords\CanResetPassword;
use Illuminate\Foundation\Auth\Access\Authorizable;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract;
use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract;


class User extends Eloquent implements AuthenticatableContract, AuthorizableContract, CanResetPasswordContract
{
    use HasApiTokens, HasFactory, Notifiable;
    use Authenticatable, Authorizable, CanResetPassword;
    use HasRoleAndPermission;

    /**
     * The attributes that are mass assignable.
     *
     * @var string[]
     */
    protected $connection = 'mongodb';
    protected $collection = 'users';

    protected $primaryKey = '_id';

    protected $fillable = [
        'name',
        'email',
        'password',
    ];   
}

标签: laravelmongodbseeding

解决方案


推荐阅读