2013-11-04 17 views
0

我有發票模型和InvoiceCharge模型。 InvoiceCharge is belongsTo Invoice & Invoice hasMany InvoiceCharge。發票費用與發票中列出的產品和服務相似。如何在cakephp中更新表時刪除條目?

我正在使用jQuery添加更多行以添加更多費用。

保存invoice和invoice_table工作,因爲它應該。

但是,當涉及到編輯發票我想要一個「刪除線」按鈕(感謝javascript,它的工作原理)。當我保存發票時,我想要使用新值更新invoice_charges表,同時我想刪除發票中不再有的條目(因爲我通過單擊「刪除行」按鈕刪除了一些費用)。我可以使用ajax函數來刪除這些條目,只要我點擊按鈕「刪除線」;但我對這種方法並不滿意。我只想在保存發票時添加/刪除/更新條目。

請指導我。

回答

0

保存新發票不應該是一個問題,只需要對數據執行saveAssociated。編輯發票時,首先使用saveAssociated保存所有數據,但在保存期間,請確定您當前保存的訂單項的ID。你可以不喜歡下面可以輕鬆地跟蹤所有saveAssociated操作過程中產生的新的了LineItem的的ID -

Retrieving inserted IDs from saveAll() in CakePHP

然後,對於其INVOICE_ID所有訂單項可以用deleteAll是發票的id你正在編輯,但是他的ID不在你想要保留的那一套。這會刪除您不再需要的所有舊訂單項。

$this->LineItem->deleteAll(array('LineItem.invoice_id' => 1, 'NOT' => array('LineItem.id' => array(1, 2, 3, etc.,)); 

由於此方法需要多個數據庫調用來保存發票,因此您應該在事務中執行此操作。