Laravel 播种无效
Laravel Seeding not working
考虑以下代码:
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
我希望 的每个 迭代 的增量值从 1 到 100 =]外部foreach循环.
示例:
第 1 次迭代 100 个用户和 100 个员工记录应创建为 emp_id 1 到 100,部门为 'abc'
第 2 次迭代再次创建 100 个用户和 100 个员工记录 emp_id 1 到 100,部门为 'xyz'
等等。
我试图在工厂之前声明 $i=1 然后用 each()
增加 $i 但它没有工作并给出 duplicate key error
.
Note that the unique constraint in my table for employee is
department-emp_id
这是一个棘手的问题。索引变量的值没有更新,因为当您将基元传递给 use
子句中的函数时,它们会被复制。默认情况下仅通过引用传递对象。
为了解决这个问题,您需要通过在 &
:
之前明确地将您的索引变量作为引用传递
foreach ($departments as $department)
{
$i = 1;
factory(App\User::class, 100)->create()
->each(function ($u) use ($department, &$i)
{
$u->employee()->save(factory(App\Employee::class)->make([
'department' => $department,
'emp_id' => $i++,
]));
});
}
我在 3v4l.
上拼凑了一个小例子来展示不同之处
考虑以下代码:
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
我希望 的每个 迭代 的增量值从 1 到 100 =]外部foreach循环.
示例:
第 1 次迭代 100 个用户和 100 个员工记录应创建为 emp_id 1 到 100,部门为 'abc'
第 2 次迭代再次创建 100 个用户和 100 个员工记录 emp_id 1 到 100,部门为 'xyz' 等等。
我试图在工厂之前声明 $i=1 然后用 each()
增加 $i 但它没有工作并给出 duplicate key error
.
Note that the unique constraint in my table for employee is department-emp_id
这是一个棘手的问题。索引变量的值没有更新,因为当您将基元传递给 use
子句中的函数时,它们会被复制。默认情况下仅通过引用传递对象。
为了解决这个问题,您需要通过在 &
:
foreach ($departments as $department)
{
$i = 1;
factory(App\User::class, 100)->create()
->each(function ($u) use ($department, &$i)
{
$u->employee()->save(factory(App\Employee::class)->make([
'department' => $department,
'emp_id' => $i++,
]));
});
}
我在 3v4l.
上拼凑了一个小例子来展示不同之处