简体   繁体   English

如何在 Laravel 的 Seeder 中为用户分配角色

[英]How to assign role to user in laravel's Seeder

How to add the role "Admin" after creating a new user in AdminUserSeeder?在 AdminUserSeeder 中创建新用户后如何添加角色“Admin”? My insert AdminUserSeeder's code :我插入 AdminUserSeeder 的代码:

<?php

use Illuminate\Database\Seeder;
use App\User;
use Spatie\Permission\Traits\HasRoles;
use Spatie\Permission\Models\Role;
use Spatie\Permission\Models\Permission;

class CreateAdminUserSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        $user = User::create([
            'username' => 'admin', 
            'email' => 'admin@test.com',
            'password' => bcrypt('password')
        ]);

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

        $permissions = Permission::pluck('id','id')->all();

        $role->syncPermissions($permissions);

        $user->assignRole([$role->id]);
    }
}

I keep getting this error when I run seeder:运行播种机时,我不断收到此错误:

BadMethodCallException : Call to undefined method App\\User::assignRole() BadMethodCallException : 调用未定义的方法 App\\User::assignRole()
Illuminate\\Database\\Eloquent\\Model::throwBadMethodCallException("assignRole") Illuminate\\Database\\Eloquent\\Model::throwBadMethodCallException("assignRole")

assign role by name按名称分配角色

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

    $permissions = Permission::pluck('id','id')->all();

    $role->syncPermissions($permissions);

    $user->assignRole($role->name]);

and your model should be like this你的模型应该是这样的

use Illuminate\Foundation\Auth\User as Authenticatable;
use Spatie\Permission\Traits\HasRoles;

class User extends Authenticatable
{
    use HasRoles;

    // ... etc
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM