在Seed(laravel 8)中将角色分配给用户(无包)

在Seed(laravel 8)中将角色分配给用户(无包),laravel,laravel-8,Laravel,Laravel 8,我试图在Seeder中生成用户,但不知道如何为他们分配角色 public function run() { for ($i=0; $i < 3; $i++) { $userData[] = [ 'name' => Str::random(10), 'email' => Str::random(10).'@gmail.com', 'password' => Hash::make(

我试图在Seeder中生成用户,但不知道如何为他们分配角色

public function run()
{
    for ($i=0; $i < 3; $i++) {
        $userData[] = [
            'name' => Str::random(10),
            'email' => Str::random(10).'@gmail.com',
            'password' => Hash::make('password')

        ];
    }

    foreach ($userData as $user) {
        User::create($user);
    }
}
公共函数运行()
{
对于($i=0;$i<3;$i++){
$userData[]=[
'name'=>Str::random(10),
“email'=>Str::random(10)。@gmail.com”,
'password'=>Hash::make('password')
];
}
foreach($userData作为$user){
用户::创建($User);
}
}

假设所有,也就是说,我想您想要创建具有随机角色的随机用户。我认为您使用这样的角色结构-,因此您的代码如下:

public function run()
{
    $roles = [1,2,3]; //here you need to add id roles from the DB
    for ($i = 0; $i < 3; $i++) {
        $user = User::create([
            'name' => Str::random(10),
            'email' => Str::random(10).'@gmail.com',
            'password' => Hash::make('password')
        ]);

        // first variant
        $user->roles()->attach($roles[array_rand($roles)]) // attach random role to user, the can be duplicated
        //second variant
        $user->roles()->attach($roles[$i % count($a);]) // attach random role to user, the will be duplicated, if you have more users than roles 
    }
}
公共函数运行()
{
$roles=[1,2,3];//这里需要从数据库添加id角色
对于($i=0;$i<3;$i++){
$user=user::创建([
'name'=>Str::random(10),
“email'=>Str::random(10)。@gmail.com”,
'password'=>Hash::make('password')
]);
//第一变体
$user->roles()->attach($roles[array_rand($roles)])//将随机角色附加到用户,可以复制
//第二种变体
$user->roles()->attach($roles[$i%count($a);])//将随机角色附加到用户,如果用户多于角色,则将复制
}
}

您有哪些角色?“管理员”、“作者”、“阅读”,您想将随机角色分配给用户吗?是的,先生。将角色附加到seederhi中的用户,感谢您的努力。我不擅长调试。当我设置种子:“无法添加或更新子行:外键约束失败”时,它不起作用。请将
存储/logs/laravel.log中的错误日志附加到主题中