使用 CakePHP 将数据保存到新表中


Saving data to a new table with CakePHP

我有一个订单数据库,并希望在订单完成后将订单保存在新数据库中。我的订单模型有一个包含 ID、客户、部件号等的表,我的 OldOrder 有一个订单表的副本。

订单完成后,我的计划是将订单数据保存到 OldOrder 模型,然后从订单模型中删除订单。这样,我可以拥有一个小型的当前订单数据库,并让旧的订单数据库扩展。

我对执行此操作的最佳方法感到困惑,我的尝试是在我的订单模型中创建一个操作,例如(这只是旨在将数据复制到 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`

您需要将订单数据传递给 OldOrder 模型的保存方法,如下所示:

$this->OldOrder->save(array('OldOrder' => $this->data['Order']));

或者你也可以这样做:

$this->OldOrder->set($this->data['Order']);
$this->OldOrder->save();

来自 CakePHP 文档:

CakePHP 使保存模型数据变得轻而易举。准备保存的数据应使用以下基本格式传递给模型的 save() 方法:

 Array
 (
     [ModelName] => Array
         (
             [fieldname1] => 'value'
             [fieldname2] => 'value'
         )
 )