2014-09-22 53 views
0

我有我动态地从API在现有的记录跳过否则插入数据Laravel锋

public function up() { 
    Schema::create('reports', function(Blueprint $table) { 
     $table->engine = 'InnoDB'; 
     $table->increments('id'); 
     $table->integer('program_id')->unique(); 
     $table->date('date'); 
     . 
     . 
     . 
     $table->timestamps(); 
    }); 

每个API请求播种下表结构我回来的数据的阵列,并且我试图保存主题在上面的表格。如果program_id存在,我想忽略这些记录并保存新的记录。 我一直在四处寻找,但我没有找到最佳的方式验证特定值检索阵列

SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '528027827' for key 'reports_program_id_unique 

为保存我的记录的方式

// $datas are the field datas from API 
foreach ($datas as $data) 
{ 
     $report = \Td\Reports\Reports\Reports::firstOrCreate($data); 
} 

如何跳过现有的刀片program_id并插入新的?

回答

1

您可以使用firstOrCreate()

$data = ['program_id' => 528027827, ...]; 

$report = Report::firstOrCreate($data); 
+0

谢谢,我将再试一次 – fefe 2014-09-22 21:35:39

+0

已经尝试过但仍然在执行'SQLSTATE [23000]:完整性约束违规:1062关键'reports_program_id_unique'的重复条目'528027827' – fefe 2014-09-23 08:48:44

0

您遇到的问题是,你指定program_id为需要是唯一的,然后发送与具有相同program_id

数据的数组

您需要从数据库中删除unique密钥,从阵列中删除重复项,或者如果program_id是主键,请将其设置为模型protected $primaryKey = 'program_id';

相关问题