web-dev-qa-db-ja.com

4桁の年が見つかりませんでしたデータがありません

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();

エラーは発生しません。しかし、本当に別の種類のユーザーをシードする必要があります...

何か案が???

10

createメソッドでキー値配列を使用してみましたか?

factory(User::class)->create(['role_id' => 2]);

32
jakehallas

パーティーに遅れる可能性があります。同じ問題が発生しており、配列の値が返されずにキーを指定したことが原因でした。

取り除く 'provider' => ''

問題の原因については本当にわかりませんが、カーボンと関係があります

3
James Dube

最近同じ問題に遭遇しましたが、最近、唯一の問題はであることがわかりました。タイムスタンプ列の型に無効な値を入力しました

私の場合、列_email_verified_at [timestamp]_があります。 date valuesの代わりに_[email protected]_のような文字列を配置したことを理解できません。それはnow()である必要があります。

ララヴェルでカーボンとパーシジョンタイムの日差を取得する方法

0
seyyedali

一括割り当てを使用するときに同じ問題が発生し、リクエストヘルパー関数で入力の配列をラップするのを忘れていました

つまり、Model :: create([フォーム入力]);

Model :: create(request([form input]);の代わりに

誰かがそれに遭遇した場合に備えて。

0
F KIng