2012-11-09 49 views
0

我有以下問題。我有一個從窗體中檢索的對象,並將結果與​​具有保存爲InspectionReport對象的較早版本的表單的數據庫進行比較。Symfony 1.4合併2個相同的對象並更新舊記錄

當有形式的舊版本,使用合併與舊的新的信息:

// $found_inspection_report is the report found in the database, 
// $inspection_report is the one from the form 
$found_inspection_report->merge($inspection_report); 

然後我想用新值到數據庫中保存合併對象如舊從數據庫中找到對象。 由於合併overwrited的$ found_inspection_report的ID我首先把舊ID後面:

$found_inspection_report->setId($old_id); 

然後我保存它:

$found_inspection_report->save(); 

但後來我得到以下錯誤:

SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '1' for key 'PRIMARY' 

所以我的問題是,有沒有辦法成功合併,甚至可能沒有舊的ID被設置回來,並更新/保存舊的對象/記錄在數據庫中,說ID爲1而不是新的記錄。

回答

1

使用synchronizeWithArray方法代替合併。看到這裏的documentation

$old->synchronizeWithArray($arrayNew); 
$old->save(); 
+0

我不是這個解決方案越來越多的進一步...問題是,我想更新與新值等植物學對象。但是當我嘗試同步或合併數據時,id會丟失,並且只會保存一個新的id。 –

+0

我甚至不能保存我從數據庫中檢索到的現有對象而沒有得到「SQLSTATE [23000]:完整性約束衝突:1062對於'PRIMARY'鍵錯誤的重複條目'1-1'錯誤 –