gpt4 book ai didi

php - laravel 数据库播种机添加随机添加外键 ID 到种子

转载 作者:行者123 更新时间:2023-12-04 17:32:19 26 4
gpt4 key购买 nike

我正在尝试创建用于测试目的的播种机。我有通过房间 ID 属于某个房间的用户,这些房间是通过房间播种机创建的,在我的用户播种机中,我创建了一个用户并像这样更新 room_id 属性,

factory(App\User::class, 150)->create([
'host' => false,
'room_id' => App\Room::inRandomOrder()->first()->id
]);

我的问题是这里生成的所有用户都获得相同的房间 ID,如何才能真正从数据库中获取随机房间 ID 并在我的播种器中使用它?

最佳答案

我在播种时遇到了同样的问题。问题是,您通过传递一组“值”来覆盖工厂的默认模型属性。您正在将 App\Room::inRandomOrder()->first()->id 的值传递给 create 方法。因此,所有用户都具有相同的 room_id

要解决此问题,在 laravel 8 中,您可以将 'room_id' => Room::inRandomOrder()->first()->id 移动到您的 UsersFactory定义:

class UsersFactory {
...

public function definition()
{
return [
'room_id' => Room::inRandomOrder()->first()->id
];
}
...
}

然后像这样创建用户,

App\User::factory()->count(150)->create([
'host' => false
]);

在旧版本的 laravel 中,定义你的工厂如下:

$factory->define(App\User::class, function ($faker) use ($factory)  {
return [
'room_id' => Room::inRandomOrder()->first()->id
];
});

然后像这样创建用户,

factory(App\User::class, 150)->create([
'host' => false,
]);

关于php - laravel 数据库播种机添加随机添加外键 ID 到种子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58392664/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com