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();
エラーは発生しません。しかし、本当に別の種類のユーザーをシードする必要があります...
何か案が???
create
メソッドでキー値配列を使用してみましたか?
factory(User::class)->create(['role_id' => 2]);
パーティーに遅れる可能性があります。同じ問題が発生しており、配列の値が返されずにキーを指定したことが原因でした。
取り除く 'provider' => ''
。
問題の原因については本当にわかりませんが、カーボンと関係があります
最近同じ問題に遭遇しましたが、最近、唯一の問題はであることがわかりました。タイムスタンプ列の型に無効な値を入力しました。
私の場合、列_email_verified_at [timestamp]
_があります。 date valuesの代わりに_[email protected]
_のような文字列を配置したことを理解できません。それはnow()
である必要があります。
ララヴェルでカーボンとパーシジョンタイムの日差を取得する方法
一括割り当てを使用するときに同じ問題が発生し、リクエストヘルパー関数で入力の配列をラップするのを忘れていました
つまり、Model :: create([フォーム入力]);
Model :: create(request([form input]);の代わりに
誰かがそれに遭遇した場合に備えて。