如何在 cakephp 中更新表时删除条目


How to delete entries when updating table in cakephp?

我有发票模型和发票收费模型。发票费用属于发票和发票有许多发票费用。发票费用类似于发票中列出的产品和服务。

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

保存发票和invoice_table正常工作。

但是在编辑发票时,我想要一个"删除行"按钮(感谢javascript,它可以工作)。当我保存发票时,我想用新值更新invoice_charges表,我也想删除发票中不再存在的全部内容(因为我通过单击"删除行"按钮删除了一些费用)。我可以使用 ajax 函数在单击"删除行"按钮后立即删除这些条目;但我对这种方法不满意。我只想在保存发票时添加/删除/更新条目。

请指导我。

保存新发票应该不是问题,只需对数据进行保存关联即可。 编辑发票时,首先使用 saveAssociated 保存所有数据,但在执行保存时,请找出当前正在保存的行项目的 ID。 您可以执行以下操作来轻松跟踪在 saveAssociated 操作期间创建的所有新行项的 ID -

从 CakePHP 中的 saveAll() 中检索插入的 ID

然后,对所有行项执行 deleteAll,这些行项的invoice_id是您正在编辑的帐单的 ID,但其 ID 不在您要保留的行列项集中。 这将删除您不再需要的所有旧订单项。

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

由于此方法需要多个数据库调用来保存发票,因此您应该在事务中执行此操作。