我正在将数据从一个表移动到另一个表,两者的标签相同。一旦数据从 orders 表传输到 archived_orders 表,就应该从 orders 表中删除
除了名称之外,这两个表具有完全相同的结构。一个叫orders,另一个叫archived_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);
}
数据已成功保存到 archived_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 字段。