【发布时间】:2019-05-25 04:07:10
【问题描述】:
我有一个 User, Company 和 BusinessUnit 模型,已经创建了关系,我想在这种情况下使用模型工厂进行数据库播种:
- 每个用户都有一个公司
- 每个公司都属于一个用户,并有许多业务单位
- 每个业务单元都属于一个公司
我创建了这段代码来播种Company,它正在工作
factory(App\User::class, 5)->create()->each(function ($user) {
$user->company()->saveMany(
factory(App\Company::class, 5)->make()
);
});
但是当我尝试像这样添加BusinessUnit 时:
factory(App\User::class, 5)->create()->each(function ($user) {
$user->company()->saveMany(
factory(App\Company::class, 5)->make()->each(function ($company) {
$company->businessUnit()->saveMany(
factory(App\BusinessUnit::class, 50)->make()
);
})
);
});
我收到了这个错误:
SQLSTATE[23000]:违反完整性约束:1048 列“company_id”不能为空(SQL:插入
business_units(icon,name,description,address,company_id,updated_at,created_at) 值 (//via.placeholder.com/150, Aspernatur consectetur quia vitae., Odio natus et eaque aut neque. Corrupti illo optio aut quas reiciendis est. Officiis doloribus vitae aliquam cupiditate dolor., 4300 Bartell Fords Elijahton, TX 34915-7562, , 2018-12-27 11:24:42, 2018-12-27 11:24:42))
有什么合适的方法吗?我已经阅读了文档,但仍然没有任何线索。请帮忙。
【问题讨论】:
-
这个即将到来的变化对你来说是完美的:github.com/laravel/framework/pull/26811
-
@Shibon 我遵循了您的链接建议,但仍然无法为业务部门播种工作
-
@Shibon ,我确实重新检查了您的第一个链接并找到了解决方案。我会发布它作为答案。非常感谢。
-
你的问题是重复的,请不要将其发布为答案