Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CakePHP查找数据但不删除数据_Php_Mysql_Cakephp - Fatal编程技术网

CakePHP查找数据但不删除数据

CakePHP查找数据但不删除数据,php,mysql,cakephp,Php,Mysql,Cakephp,我将数据从一个表移动到另一个表,两个表的标签相同。一旦数据从orders表传输到archived_orders表,它就应该从orders表中删除 除名称外,两个表的结构完全相同。一个称为订单,另一个称为归档订单 CREATE TABLE `archived_orders` ( `orderid` int(10) default NULL, `userid` int(10) default NULL, `order_status` varchar(20) default NULL,

我将数据从一个表移动到另一个表,两个表的标签相同。一旦数据从orders表传输到archived_orders表,它就应该从orders表中删除

除名称外,两个表的结构完全相同。一个称为订单,另一个称为归档订单

CREATE TABLE `archived_orders` (
  `orderid` int(10) default NULL,
  `userid` int(10) default NULL,
  `order_status` varchar(20) default NULL,
  `email` varchar(50) default NULL,
  `total` varchar(50) default NULL,
  `fullName` varchar(60) default NULL,
  `address` varchar(50) default NULL,
  `city` varchar(50) default NULL,
  `state` varchar(50) default NULL,
  `zip` varchar(15) default NULL,
  `created` datetime default NULL,
  `modified` datetime default NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
下面是处理传输和删除的代码

$data = $this->Order->find('all',array(
     'conditions' => array('order_status'=> "filled"
     'userid' => AuthComponent::user('id'))
));
$this->loadModel('ArchivedOrder');
$archived_data = array();
foreach($data as $order => $o) {
     $archived_data[]['ArchivedOrder'] = $o['Order'];  
}
if($this->ArchivedOrder->SaveAll($archived_data)){ 
     $this->Order->deleteAll(array(
       'conditions' => array('order_status'=> "filled",
        'userid' => AuthComponent::user('id'))
    ),$cascade = true, $callbacks = false);
}
数据已成功保存到存档的_orders表中,但我发现以下与删除相关的错误。它试图找到标记为“id”的列,但我从未指定它

Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'Order.id' in 'field list'
SQL Query: SELECT `Order`.`id` FROM `testdb`.`orders` AS `Order` WHERE conditions IN ('filled', '4')
还有一件事,我知道这不是正确的解决方案,我也不打算使用它,但是如果我写下查询

$this->Order->query("delete....");

这些值将被删除。是的,我知道这不是正确的方法。只是指出它似乎正在搜索一个不存在的id字段。

您的表没有遵循将主键命名为id的CakePHP约定

您有两个选项来纠正此问题:

  • 将主键从orderid重命名为id
  • 在订单模型中,设置公共变量$primaryKey='orderid'
    如果这不是传统的应用程序,我会使用选项一来保持惯例。

    谢谢您的帮助。我会按照你的建议重新命名的。