我正在从另一个服务获取JSON,并希望在表中插入一组数据.我希望它不会每次运行都崩溃.我希望对表的PK保持唯一的约束(因为我不想插入两次相同的数据),但如果发生致命错误,我不希望laravel抛出致命错误(仅在特定表上).
如果我try 插入另一个具有重复主键的数据,如何插入数据并继续插入?
Schema::create('dummy', function (Blueprint $table) {
$table->integer('id')->unique();
$table->string('name',100);
});
从另一个API获取一堆JSON.然后插入所有行:
{
'id':1,
'name': 'one'
},{
'id':2
'name':'two'
}
这让我很惊讶.
DB::table('dummy')->insert([
['id' => 1, 'name' => 'one'],
['id' => 2, 'name' => 'two']
]);
然后又有一天,第三方API上出现了新数据.想更新我的数据库:
获取json,并接收:
{
'id':1,
'name': 'one'
},{
'id':2
'name':'two'
},{
'id':3
'name':'three'
}
这使得:
DB::table('dummy')->insert([
['id' => 1, 'name' => 'one'], // <-- will crash there cause PK already existe, but want to keep inserting
['id' => 2, 'name' => 'two'], // <-- skipp cause already exist
['id' => 3, 'name' => 'three'] // insert that line.
]);