目前,我无法手动将记录保存到HABTM联接表。我有一个表users_products
,并希望将有关订单(大小,数量,颜色等)的所有其他信息保存到此连接表,而不是创建单独的表。
用户$ 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'];
}
不幸的是,这会在数据库中添加一条新记录,并在执行此操作时清除整个连接表。有什么想法吗?
答案 0 :(得分:2)
你需要一个hasMany通过关联。这就像HABTM一样,但不是在User
和Product
上定义HABTM,而是在连接模型和模型文件(之前不需要)中定义一个hasMany将belongsTo关联定义为User
和Product
看看CookBook,它在那里很好地解释:http://book.cakephp.org/view/1650/hasMany-through-The-Join-Model