使用Laravel中的工厂播种递归表

时间:2016-10-01 20:10:16

标签: laravel recursion laravel-5.1 factory laravel-seeding

我的Laravel数据库项目中有一个处理动态菜单的递归表。出于测试目的,我想用随机元素为该表播种。

faker库的随机元素可以用于菜单名称。问题是如何生成与该菜单表的任何元素匹配的 parent_id 数字。我给你举个例子:

+---------------------------+
| id  | name    | parent_id |
+---------------------------+
| 1   | animals | 0         |
|---------------------------|
| 2   | food    | 0         |
|---------------------------|
| 3   | dog     | 1         |
|---------------------------|
| 4   | potato  | 2         |
|---------------------------|
| 5   | monkey  | 1         |
+---------------------------+

随机数在这里不起作用,因为该表的某些条目不具有任何关联的父级。由于id是增量的,因此id会随时更改。 parent_id必须与某个id相关联。

我已经为第一级(parent_id = 0)创建了工厂。但我现在不知道如何继续。

$factory->defineAs(App\Section::class, 'firstLevelMenu', function($faker) {
   return [
       'name' => $faker->unique->randomElement([
           'animals',
           'food'
       ]),
       'parent_id' => '0'
   ];
});

0 个答案:

没有答案