0

我有发票模型和 InvoiceCharge 模型。InvoiceCharge 是属于 Invoice 且 Invoice 有很多 InvoiceCharge。发票费用类似于发票中列出的产品和服务。

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

按应有的方式保存 invoice 和 invoice_table 工作。

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

请指导我。

4

1 回答 1

0

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

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

然后,对所有 invoice_id 是您正在编辑的发票的 id 但其 id 不在您想要保留的集合中的行项目执行 deleteAll。这将删除您不再需要的所有旧订单项。

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

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

于 2013-11-04T17:06:18.293 回答