如何在Laravel迁移过程中播种相关数据?



我有一个表clients和一个表contracts。在我的Client模型中我有

public function contract()
{
return $this->hasOne(
'AppModelsContract',
'client_id',
'id'
);
}

我不想在我的数据库中有任何没有合同的客户端。当我为我的客户端播种时,使用带有伪造数据的工厂,我想创建使用合同上的外键user_id映射到客户端的合同。

确保为每个表创建一个工厂,然后您可以简单地执行如下操作

Client::factory()
->count(3)
->has(Contract::factory()->forUser()->create())
->create();

注意:检查你的模型中的关系,然后它应该是好的:)

我就是这么做的:

AppModelsClient::factory(10)->create()->each(function ($client) {
$client->contract()->save(Contract::factory()->make());
});