2013-05-29 78 views
0

我正在將數據從一個表移動到另一個表,兩者的標記都是相同的。一旦數據從訂單表到archived_orders錶轉移,應該然後從訂單表CakePHP查找數據但不刪除它

刪除這兩個表有相同的結構,除了名字。一個是所謂的訂單,另一種是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字段。

回答

1

你的表沒有關注其命名爲ID的主鍵的CakePHP的約定。

你有兩種選擇,以糾正這個:

  1. 重命名從訂單ID爲ID的主鍵。
  2. 在您的訂單模型中設置public var $ primaryKey ='orderid';

我會使用選項一,如果這不是傳統的應用程序保持約定。

+0

感謝您的幫助。我會按照你的建議重新命名它。 – user1443519