【发布时间】:2014-03-23 14:59:23
【问题描述】:
我有一个订单数据库,并希望在订单完成后将订单保存在新数据库中。我的 Order 模型有一个包含 id、customer、partnumber 等的表,而我的 OldOrder 有一个 Order 表的副本。
订单完成后,我的计划是将订单数据保存到 OldOrder 模型,然后从 Order 模型中删除订单。这样我就可以拥有一个小的当前订单数据库,并让旧的订单数据库扩展。
我对执行此操作的最佳方法感到困惑,我的尝试是在我的 Order 模型中创建一个动作,例如这样(这只是为了将数据复制到 OldOrder 模型):
function save_order() {
if(!empty($this->data)){
$id = $this->data['Order']['id'];
$this->data = $this->Order->find('first', array('conditions' => array('Order.id' => $id)));
$this->loadModel('OldOrder');
$this->OldOrder->save($this->data);
}
}
但是这不起作用。我没有收到任何错误消息,但没有任何内容保存到 OldOrder 表中。任何信息为什么会发生这种情况或实现我想做的更好的方法将不胜感激!
编辑:
这是来自操作的 SQL 转储:
1 SHOW FULL COLUMNS FROM `orders`
2 SELECT CHARACTER_SET_NAME FROM INFORMATION_SCHEMA.COLLATIONS WHERE COLLATION_NAME= 'latin1_swedish_ci'; 1 1 4
3 SHOW FULL COLUMNS FROM `users`
4 SELECT `Order`.`customer`, `Order`.`length`, `Order`.`height`, `Order`.`date`, `Order`.`quantity`, `Order`.`order_number`, `Order`.`date_created`, `Order`.`date_dispatched`, `Order`.`id` FROM `orders` AS `Order` WHERE `Order`.`id` = 17
5 SHOW FULL COLUMNS FROM `old_orders`
【问题讨论】:
-
$this->OldOrder->save($this->data);的返回类型是什么?此外,您可能希望在事务中执行此操作 -
对不起,JonhP,你必须忍受我,我只使用 cakephp 3 天。返回类型是什么意思?
-
$this->OldOrder->save($this->data);如果无法保存,将返回 false。在保存电话上执行var_dump() -
@JohnP 啊,我明白了,它返回 true。
-
嗯,它似乎正在节省。您可能想要设置 `$this->render(false);返回假();'就在您的保存调用下,然后查看 SQL 日志。它有插入吗?