【发布时间】:2018-06-17 03:16:09
【问题描述】:
考虑下面的代码:
foreach ($departments as $department)
{
factory(App\User::class, 100)->create()
->each(function ($u) use($department)
{
$u->employee()->save(factory(App\Employee::class)->make([
'department' => $department,
'emp_id' => '',
]));
});
}
现在对于emp_id,我希望外部 foreach 循环的每个迭代都有从 1 到 100 的增量值。。 p>
例子:
第一次迭代 100 个用户和 100 个员工记录应创建 emp_id 1 到 100,部门为 'abc'
第二次迭代再次创建 100 个用户和 100 个员工记录,emp_id 为 1 到 100,部门为“xyz” 等等。
我试图在工厂之前声明 $i=1 然后增加 $i withing each() 但它不起作用并给出了duplicate key error。
请注意,我的表中员工的唯一约束是 部门-emp_id
【问题讨论】:
-
您对这些数据库表之一(可能是
employees表)有任何(唯一)约束吗? -
我已经在最后提到过,我对组合列 department-emp_id 有一个唯一约束
-
对不起,由于颜色,我完全忽略了它。
$department是整数还是模型? -
$department 只是“abc”、“xyz”等部门的不同名称
-
我认为您的解决方案应该可行,而且它一定是一个引起麻烦的小细节。您是否已将计数变量添加到
each()中函数的use部分?您是否尝试在each()中转储计数变量的内容?
标签: php laravel-5 laravel-seeding