Faker Package,数据库播种器问题

时间:2014-12-15 22:31:15

标签: php database laravel eloquent faker

我在这个兔子洞的深处。这个问题实际上是让我的Laravel应用程序正常运行的更大问题的一部分。如果您想了解有关我的麻烦的更多信息,请点击此处链接到另一个问题:Model, Database Error in Laravel

所以,现在我正在尝试使用数据库浏览器软件包Faker来填充我的数据库。我已经正确安装了它,但是我无法在User表之外使它工作。这是我为UserTableSeeder提供的内容:

class UserTableSeeder extends Seeder {

  public function run()
  {
    $faker = Faker\Factory::create();

    for ($i = 0; $i < 100; $i++)
    {
        User::create(
            [
                'id' => $faker->randomDigit,
                'first_name' => $faker->firstName,
                'last_name' => $faker->lastName,
                'email' => $faker->freeEmail,
                'notify' => $faker->randomElement($array = ['y', 'n']),
                'created_at' => $faker->dateTime($max = 'now'),
                'updated_at' => $faker->dateTime($max = 'now')
            ]
        );
    }
  }
}

当我运行php artisan db:seed时,这是半工作;它只创造了十几行左右。我的用户表有七列:

id(其类型为整数),
如first_name(VARCHAR),
姓氏(VARCHAR),
电子邮件(VARCHAR),
通知(枚举),
created_at(时间戳),
和updated_at(时间戳)

任何能够正确处理此问题或作为类似表格模板的代码都将非常感激。谢谢大家。

2 个答案:

答案 0 :(得分:2)

'id' => $faker->randomDigit可能导致ID冲突(我打赌你会得到10行,而不是12行,因为有10个可能的数字)。请改为$faker->randomNumber

答案 1 :(得分:0)

迁移:$ table-&gt;增量(&#39; id&#39;);

有了这个,你不需要在ID上设置任何值,你将避免id碰撞