0
我試圖批量更新發票上的相關項目表。FuelPHP ORM批量更新相關對象
$_POST Existing relations intended result
=====================================================
item_id: 3 unlink 3
item_id: 4 item_id: 4 update 4
item_id: 5 item_id: 5 update 5
item_id: null create x
item_id: null create x
我推有所有$_properties
的Model
預計的對象的JSON數組。
我的控制器方法是這樣的:
public function update_items($invoice_id)
{
$invoice = Model_Invoice::find($invoice_id);
if ($items = MyInput::json())
{
$invoice->from_array(array('invoice_items' => $items));
}
$invoice->save();
}
這節省了相關對象(invoice_items)時,給出了一個PK衝突錯誤。 這是因爲在$invoice->invoice_items
中更新的對象全部爲is_new() == true
。
我應該如何構造這段代碼?我不想爲每個傳入的相關項目管理添加/編輯/刪除狀態。
如果我第一次提取,不會刪除其不是POST的部分記錄。這是問題的一部分,因爲我想批量替換完整的數據集,除了POST和現有對象中的項目,它們應該被更新。 – willoller
我應該添加我目前正在執行「手動」 - 通過循環兩組匹配,執行更新,刪除不匹配的記錄,然後再插入傳入記錄的循環。它只是看起來像這個應該工作... :) – willoller
你必須作出區分之間的東西存儲和張貼,沒有辦法繞過。獲取發票對象與所有相關的項目對象,循環他們和刪除/取消任何不存在的職位,然後循環你的帖子更新/創建。 – WanWizard