[英]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.