所以我做了一个网上商店,我想使每一次购买有多个产品。我有表products、purchases和product_purchases。我想让这个函数为purchases添加一行(该部分有效),减去所需的库存(也有效),并为product_purchases添加所需的行数。问题是只有最后一行被保存到连接表中。
public function add($price=null){
$user_id = $this->Session->read('Auth.User')['id'];
$purchase_in = array();
$purchase_in['Purchase']['user_id']= $user_id;
$purchase_in['Purchase']['price']= $price;
$this->Purchase->save($purchase_in);
$jointable_in = array();
$Purchase = array();
$purchase_id=$this->Purchase->getInsertID();
$Purchase['id_purchase']= $purchase_id;
$jointable_in['Purchase']['Purchase']= $Purchase;
$cart = $this->Session->read('cart');
foreach ($cart as $product_id) {
$product = $this->Purchase->Product->findById($product_id);
$stock = ($product['Product']['stock'])-1;
$stock_in = array();
$stock_in['Product']['id']= $product_id;
$stock_in['Product']['stock']= $stock;
$this->Purchase->Product->save($stock_in);
$product = array();
$product['id_product']= $product_id;
$jointable_in['Product']['Product']= $product;
$this->Product->Purchase->save($jointable_in);
}
return $this->redirect(array('controller'=>'products','action' => 'cartempty'));
}
我试过保存到ProductsPurchase模型,但不起作用,我也试过输入一个数组,就像在食谱中那样保存所有,但它没有保存任何东西,我也试过这样做$this-〉Product-〉Purchase-〉clear()后,每次保存,但它添加了空行到Purchase表,所以我不知道还有什么可以尝试的。
1条答案
按热度按时间x8goxv8g1#
我终于解决了这个问题,我只需要使用saveAll()函数一次。
在我的代码中,我试图先保存购买,然后保存HABTM表数据。主要的问题是,这样做蛋糕是把他们作为单独的记录。
最后,我将第一次保存的数据包含在第二次保存的数组中,并将其保存在循环之外。
public function add($price=null){ $idusuario = $this-〉Session-〉read('Auth.“);