[英]CakePHP not saving entries properly
我試圖將多個行從一個表復制到另一個表,但這僅保存了我選擇的最后一個條目。 當我打印數據數組時,一切都會顯示。 我要復制到的表沒有設置auto_increment,這是我對原因的猜測,所以現在我很困惑。
foreach($this->request->data['Order']['archive_value'] as $orderid){
$data = $this->Order->query("select * from orders where orderid = '$orderid'");
$newdata = array(
'ArchivedOrder' => array(
'orderid' => $data[0]['orders']['orderid'],
'id' => $data[0]['orders']['id'],
'order_status' => $data[0]['orders']['order_status'],
'email' => $data[0]['orders']['email'],
'total' => $data[0]['orders']['total'],
'fullName' => $data[0]['orders']['fullName'],
'address' => $data[0]['orders']['address'],
'city' => $data[0]['orders']['city'],
'state' => $data[0]['orders']['state'],
'zip' => $data[0]['orders']['zip'],
'created' => $data[0]['orders']['created'],
'modified' => $data[0]['orders']['modified']
));
print_r($newdata); //this shows every entry that I look up, but it's not saving them properly
$this->loadModel('ArchivedOrder');
$this->ArchivedOrder->save($newdata);
///$this->Order->query("delete from orders where orderid = '$orderid'");
}
當我從PHPMyAdmin轉儲表結構時,顯示的是
CREATE TABLE `archived_orders` (
`orderid` int(10) default NULL,
`id` 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;
按照CakePHP的書在這里 :
循環調用save時,請不要忘記調用create()。
在foreach循環中執行loadModel
可能也不是一個好主意。
// load the model
// foreach loop
// build the data
$this->ArchivedOrder->create();
$this->ArchivedOrder->save($newdata);
//...
該代碼存在多個問題
在OrdersController下授予您
$newdata = array();
foreach($this->request->data['Order']['archive_value'] as $orderid){
$data = $this->Order->find('all',array('conditions'=>array('orderid'=>$orderid)));
if(count($data) > 0){
$newdata[] = array(
'ArchivedOrder' => array(
'orderid' => $data[0]['Order']['orderid'],
'id' => $data[0]['Order']['id'],
'order_status' => $data[0]['Order']['order_status'],
'email' => $data[0]['Order']['email'],
'total' => $data[0]['Order']['total'],
'fullName' => $data[0]['Order']['fullName'],
'address' => $data[0]['Order']['address'],
'city' => $data[0]['Order']['city'],
'state' => $data[0]['Order']['state'],
'zip' => $data[0]['Order']['zip'],
'created' => $data[0]['Order']['created'],
'modified' => $data[0]['Order']['modified']
));
}
}
if(count($newdata) > 0){
$this->loadModel('ArchivedOrder');
print_r($newdata); //this shows every entry that I look up, but it's not saving them properly
foreach($newdata as $order):
$this->ArchivedOrder->id = $order['ArchivedOrder']['id'];
if($this->ArchivedOrder->exists()){
echo 'Entered Already';
}else{
$this->ArchivedOrder->create();
if($this->ArchivedOrder->save($order)){
}else{echo 'error'; return false;}
}
endforeach;
}
unset($newdata);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.