次の問題があります。フォームから取得したオブジェクトがあり、その結果を、古いバージョンのフォームが InspectionReport オブジェクトとして保存されているデータベースと比較します。
古いバージョンのフォームがある場合は、新しい情報を古いものとマージします。
// $found_inspection_report is the report found in the database,
// $inspection_report is the one from the form
$found_inspection_report->merge($inspection_report);
次に、マージされたオブジェクトを新しい値でデータベースに古いオブジェクトとしてデータベースに保存したいと思います。マージによって $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で言う.