0

我有 2 个表用户和需要连接的帖子。我在factory库的帮助下使用 Laravel 8 中的 tinker 创建虚拟数据。一切正常,users我正在使用它来创建用户数据:

public function definition()
{
    return [
        'name' => $this->faker->name,
        'email' => $this->faker->unique()->safeEmail,
        'email_verified_at' => now(),
        'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password
        'remember_token' => Str::random(10),
    ];
}

php artisan tinker我写道:

User::factory()->count(5)->create();

现在,我想相应地填充表,并通过使用表和表字段中的posts“名称”将这些表连接在一起。我不知道该在该部分写什么。我正在为下表编写代码:usersuser_idpostsuser_idposts

public function definition()
{
    return [
        'title'=>$this->faker->sentence,
        'user_id'=>"",
        'name'=>$this->faker->name,
        'body'=>$this->faker->paragraph
    ];
}

请帮我写user_id专栏。我应该在这里填写什么,以便我可以从users表格中获取名称并将其填充到posts表格的user_id列中。

用户表 在此处输入图像描述

帖子表 在此处输入图像描述

4

2 回答 2

0

您可以挂钩到user factory生命周期并在创建postsuser创建。

在你的UserFactory,覆盖configure方法:

public function configure()
{
    return $this->afterCreating(function (User $user) {
        $iters = mt_rand(0, 5);
        for ($i = 0; $i < $iters; $i++) {
            $user->posts()->save(new Post());
        }
    });
}

这将为您创建一些新posts的并将它们分配给我假设您在模型上定义user的关系。postsUser

于 2021-01-05T12:43:13.913 回答
0

在我们可以根据以下示例PostFactory分配一个随机数:User id

public function definition()
{
    return [
        'title'=>$this->faker->sentence,
        'user_id'=> User::inRandomOrder()->first()->id,
        'name'=>$this->faker->name,
        'body'=>$this->faker->paragraph
    ];
}
于 2021-01-05T13:01:49.170 回答