我正在尝试使用Laravel 5.2中的工厂播种
我的代码在用户工厂中死掉:
$factory->define(App\User::class, function (Faker\Generator $faker) {
$countries = Countries::all()->pluck('id')->toArray();
return [
'name' => $faker->name,
'email' => $faker->email,
'password' => bcrypt(str_random(10)),
'grade_id' => $faker->numberBetween(1, 5),
'country_id' => $faker->randomElement($countries),
'city' => $faker->city,
'latitude' => $faker->latitude,
'longitude' => $faker->longitude,
'role_id' => $faker->numberBetween(1, 3),
'verified' => true,
'remember_token' => str_random(10),
'provider' => '',
'provider_id' => str_random(5)
];
});
给我这个错误:
A four digit year could not be found Data missing
我找到了原因,但不知道如何解决它。
当我打电话给工厂时,我称之为:
factory(User::class)->create(['role_id',2]);
如果我这样称呼它:
factory(User::class)->create();
我没有错误。 但我真的需要为不同类型的用户提供种子......
任何想法???
答案 0 :(得分:29)
您是否尝试在create
方法中使用键值数组:
factory(User::class)->create(['role_id' => 2]);
答案 1 :(得分:2)
我可能迟到了派对,我遇到了同样的问题而事实证明它是因为我在返回的数组中提供了一个没有值的键。
摆脱'provider' => ''
。
关于问题的原因,我真的不知道,但它与碳有关
答案 2 :(得分:0)
使用批量分配时,我遇到了同样的问题,结果我忘了将输入数组包装在请求帮助器函数中
我有 型号:: create([表单输入]);
代替 型号:: create(request([表单输入]);
以防万一有人碰到它。
答案 3 :(得分:0)
我最近遇到了同样的问题,最近我发现唯一的问题是我在时间戳列类型中输入了无效的值。
就我而言,我有email_verified_at [timestamp]
列。我想念我把company@example.com
这样的字符串代替了 date values ,它应该是now()
。