如何在 laravel 的配置文件工厂中提供唯一的 user_id
Posted
技术标签:
【中文标题】如何在 laravel 的配置文件工厂中提供唯一的 user_id【英文标题】:How to provide unique user_id in profile factory in laravel 【发布时间】:2021-03-03 02:53:11 【问题描述】:自从这个“新”更新出现在 laravel (laravel 8) 中,我在工厂中苦苦挣扎。我需要有关如何将用户模型中的唯一 ID 提供给配置文件工厂中的 user_id 列的帮助。在我的用户模型中,我与个人资料有关系:
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,
...
【问题讨论】:
如何使用$this->faker->unique()->randomDigitNotNull;
不能使用随机数字,因为当 2 个用户具有相同 ID 时可能会导致错误 :) 它是一个外国 ID,必须是唯一的。我想知道当用户是用工厂制作时是否有办法制作个人资料:)
【参考方案1】:
如果您在已经有对应的User
时只创建Profile
,则可以将user_id
排除在Profile
工厂之外,然后use the magic methods 同时创建两者。
User::factory()->hasProfiles(1)->create();
这将自动创建一个配置文件来匹配用户。
或者,如果您确实需要在创建用户之前创建配置文件,您可以像这样定义user_id
in your factory,User
将由 Profile
创建。
return [
'user_id' => User::factory(),
'image' => 'image',
'bio' => $this->faker->sentence,
];
【讨论】:
我更喜欢第一种方式。那么,我只需要在调用工厂创建用户后在 DatabaseSeeder 中调用 User::factory()....? 目前,我有这些工厂调用:prnt.sc/vmeigb ***.com/a/70273977/14344959 看这里我希望这个对其他人有所帮助以上是关于如何在 laravel 的配置文件工厂中提供唯一的 user_id的主要内容,如果未能解决你的问题,请参考以下文章