2011-03-29 52 views
0

目前,我无法手动将记录保存到HABTM连接表。我有一张表,users_products,并希望将有关订单(大小,数量,颜色等等)的所有其他信息保存到此连接表中,而不是另外创建一个表。如何将其他信息保存到CakePHP HABTM连接表?

用户$ hasAndBelongsTo产品

我的用户控制器代码这样做:

Configure::write('debug', 0); 
     //adds product to cart 
     $this->layout = ""; //async 
     $user = $this->User->find('first',array('conditions'=>array('User.id'=>$this->Auth->user("id")))); 
     $data['User'] = $user['User']; 
     $addition = array('user_id' => $this->Auth->user("id"), 
          'product_id' => $id, 
          'size' => $size, 
          'quantity' => $quantity); 
     $data['Product'][] = $addition; 
     $this->User->create(); 
     if ($this->User->saveAll($data)) { 
      echo $data['User']['amount_in_cart']; 

     } else { 
      echo $curr_cart_amt['User']['amount_in_cart']; 
     } 

不幸的是,这增加了一个新的记录到数据库中,并清除出整个连接表,而这样做。有任何想法吗?

回答

2

你需要一个hasMany通过关联。这与HABTM的工作方式相似,但是您不必在UserProduct上定义HABTM,而是为您的连接模型和模型文件(您以前不需要)定义hasMany,将定义belongsTo关联到UserProduct

已经在菜谱一看,explainend上课相当不错,在那里:http://book.cakephp.org/view/1650/hasMany-through-The-Join-Model

+0

真棒,谢谢!这正是我所期待的。 – Nick 2011-03-30 13:46:25