2014-09-22 56 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';

相關問題