【问题标题】:Saving data to a new table with CakePHP使用 CakePHP 将数据保存到新表
【发布时间】: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 日志。它有插入吗?

标签: php mysql cakephp


【解决方案1】:

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

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

或者你也可以这样做:

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

来自CakePHP documentation

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-09
    • 2019-06-05
    • 1970-01-01
    相关资源
    最近更新 更多