2017-03-28 12 views
0

- 私は私のlaravel 5.2アプリでこのシーダクラスを持っているLaravel

class UserTypesTableSeeder extends Seeder 
{ 

    public function run() 
{ 

    DB::table('user_types')->insert([ 
[ 
    'type' => 'patient', 
    'created_at' => Carbon::now(), 
    'updated_at' => Carbon::now(), 
], 
[ 
    'type' => 'doctor', 
    'created_at' => Carbon::now(), 
    'updated_at' => Carbon::now(), 
] 

]);

ここで、同じシーダークラスに別のレコードを追加します。私はfirstOrCreate()を使用してみました:

UserType::firstOrCreate([ 
     'type' => 'patient', 
     'created_at' => Carbon::now(), 
     'updated_at' => Carbon::now(), 
    ]); 
    UserType::firstOrCreate([ 
     'type' => 'doctor', 
     'created_at' => Carbon::now(), 
     'updated_at' => Carbon::now(), 
    ]); 
    UserType::firstOrCreate([ 
     'type' => 'admin', 
     'created_at' => Carbon::now(), 
     'updated_at' => Carbon::now(), 
    ]); 

をそれが重複レコードを作ったので、updateOrCreateをしました()。

したがって、レコードを複製せずに同じシーダークラスに新しいレコードを追加するにはどうすればよいですか?

+0

テーブルをリセットしてからシードしますか? – HorusKol

+0

は、他のテーブルの外部キーであるため、テーブルからレコードを削除することはできません。 @ HorusKol –

答えて

3

私は、前のレコードの時刻が新しいクエリと同じではないため、firstOrCreateメソッドが期待通りに機能していないと思います。あなたは以下のようにクエリからcreated_atupdated_atを削除するのであれば、:

UserType::firstOrCreate([ 'type' => 'patient' ]);

を今、それが動作するはずです。また、created_atupdated_atは、firstOrCreateメソッドによって自動的に管理されます。

+0

はい、created_atとupdated_atの削除後に動作しています。 ありがとうございました。 –

関連する問題