如何在没有重复的情况下重新安装数据库 - Laravel

时间:2017-03-28 02:08:53

标签: database laravel eloquent laravel-seeding

我在laravel 5.2应用程序中有这个播种器类:

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()也是如此。

那么,如何在不重复记录的情况下将新记录添加到同一个播种器类?

1 个答案:

答案 0 :(得分:3)

我认为firstOrCreate方法没有按预期工作,因为前一条记录的时间与新查询不同。因此,如果您从查询中删除created_atupdated_at,如下所示:

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

现在,它应该工作。此外,created_atupdated_at将自动由firstOrCreate方法管理。