我正在创建3个表,它们相互关联,如下所示:
Template hasOne Attribute
Template hasOne Link
我想通过Template Seeder填充Attribute and Link表。 我尝试在Template工厂中插入两个函数以一次运行它,但是第二个函数不起作用,只有第一个函数可以正常工作。
我希望它一次全部运行。
这是我在工厂的代码:
factory(App\Models\Template\Eloquent\TemplateModel::class, 10)->create()->each(
function ($template) {
$template->links()->save(
factory(App\Models\Template\Eloquent\TemplatelinkModel::class)->make()
);
},
function ($template) {
$template->attributes()->save(
factory(App\Models\Template\Eloquent\TemplateattributeModel::class)->make()
);
}
);
该怎么做? 请一些身体帮助我吗?谢谢。
答案 0 :(得分:1)
您仅应将一个回调函数用作Illuminate \ Support \ Collection-> each()函数的参数。在您的情况下,在作为回调发送给each()的同一个函数中使用两个保存操作就可以解决问题。
factory(App\Models\Template\Eloquent\TemplateModel::class, 10)->create()->each(
function ($template) {
$template->links()->save(
factory(App\Models\Template\Eloquent\TemplatelinkModel::class)->make()
);
$template->attributes()->save(
factory(App\Models\Template\Eloquent\TemplateattributeModel::class)->make()
);
}
);
有关如何使用each()和其他Collection函数的更多信息,请参见https://laravel.com/docs/5.8/collections。