php 如何在laravel的profile工厂中提供唯一的user_id

6tdlim6h  于 2023-09-29  发布在  PHP
关注(0)|答案(4)|浏览(114)

自从laravel(laravel 8)的这个“新”更新以来,我一直在与工厂作斗争。我需要关于如何提供唯一的ID从用户模型中的配置文件工厂中的user_id列的帮助。在我的User模型中,我与profile有一个关系:

public function profile()
{
    return $this->hasOne(Profile::class);
}

在纵断面模型中:

public function user()
{
    return $this->belongsTo(User::class);
}

现在我必须向配置文件工厂提供数据:

return [
        'user_id' => ,
        'image' => 'image',
        'bio' => $this->faker->sentence,
...
falq053o

falq053o1#

如果您只创建Profile,而您已经有了一个对应的User,那么您可以将user_idProfile工厂中删除,然后使用神奇的方法同时创建这两个Profile

User::factory()->hasProfiles(1)->create();

这将自动创建与用户匹配的配置文件。
或者,如果您确实需要在创建用户之前创建一个配置文件,您可以在工厂中像这样定义user_idUser将由Profile创建。

return [
    'user_id' => User::factory(),
    'image' => 'image',
    'bio' => $this->faker->sentence,
];
smtd7mpg

smtd7mpg2#

'user_id' => $this->faker->unique()->numberBetween(1,5000),
vs3odd8k

vs3odd8k3#

最好的方法是在需要创建虚假配置文件记录时传递user_id

在配置文件工厂中:

return [
        'image' => 'image',
        'bio' => $this->faker->sentence,
...

无论你在哪里需要它:

Profile::factory()->for(User::create() , user)->create();

有关更多信息,您可以阅读Laravel文档的这一部分。

dfty9e19

dfty9e194#

'user_id' => $this->faker->unique()->numberBetween($min = 1, $max = 500)

应该是您的用户总数。

相关问题