cakephp没有将更新值保存到相关表,但没有错误

时间:2010-05-05 11:19:52

标签: cakephp save

更新订单功能查找当前订单的所有订单行 循环减去从库存水平订购的数量并在$ newstock中保持新的库存水平值。一切都好。
但是不会保存 回应“成功”和正确的值,但数据库不会更新。

订单状态字段确实更新,使用相同的代码语法 它也与Orderline具有相同的关系。 (从Orderline Controller调用的函数)

表关系是:

  

'Product'hasMany = array('Orderline');
           'Order'hasMany = array('Orderline');
          'Orderline'belongsTo = array('Order','Product');

function updateOrder(){
  $this->data['Order']['id'] = $this->getOrderid();
  $orderproducts = $this->Orderline->find('all',array('conditions' =>     
                           array('Orderline.order_id' => $this->data['Order']['id'])));

foreach($orderproducts as $orderproduct){
  $newstock = $orderproduct['Product']['stock']-$orderproduct['Orderline']['quantity'];
  $this->data['Product']['stock']= $newstock;

  if( $this->Product->saveAll($this->data)){
    echo "success"  ;
  }else{
    echo "not saved";
  }
}

  $this->data['Order']['status']= 1;
  $this->Order->saveall($this->data);

}

2 个答案:

答案 0 :(得分:1)

我想补充一点,因为我没有清除APP / tmp / cache文件夹,所以我在使用saveAll时遇到了无法保存失败。

答案 1 :(得分:0)

解决。

它实际上是在Product表中添加新行。

foreach循环中的插入中缺少此行,提醒它使用当前的Product id来知道插入新数据的位置。

$ this-> data ['Product'] ['id'] = $ orderproduct ['Product'] ['id'];