FuelPHPを使って作業しています。
請求書上の関連項目が含まれたテーブルをバルクアップデートしたいと思っています。
lang
1$_POST 既存の関係 意図した結果 2===================================================== 3 item_id: 3 unlink 3 4item_id: 4 item_id: 4 update 4 5item_id: 5 item_id: 5 update 5 6item_id: null create x 7item_id: null create x
Modelが予想する全ての$_propertiesを持つ、オブジェクトのJSON配列をプッシュしています。
コントローラのメソッドは次の通りです。
lang
1public function update_items($inv_id) 2{ 3 $hoge_inv = Model_Invoice::find($inv_id); 4 5 if ($items = MyInput::json()) 6 { 7 $hoge_inv->from_array(array('invoice_items' => $items)); 8 } 9 10 $hoge_inv->save(); 11}
しかし、このメソッドでは関連オブジェクト(invoice_items)を保存するときにPK Collisonエラーを起こしてしまいます。
これは$hoge_inv->invoice_itemsにアップデートされた全てのオブジェクトがis_new() == trueだからです。
関連項目ごとに状態(追加/編集/削除)を管理するのは、面倒なので避けたいです。
どのようにこのコードを構成すればいいですか?
どなたかよろしくお願いします。
あなたの回答
tips
プレビュー