如何将其他信息保存到CakePHP HABTM连接表?

时间:2011-03-29 21:59:45

标签: php cakephp has-and-belongs-to-many

目前,我无法手动将记录保存到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'];
        }

不幸的是,这会在数据库中添加一条新记录,并在执行此操作时清除整个连接表。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

你需要一个hasMany通过关联。这就像HABTM一样,但不是在UserProduct上定义HABTM,而是在连接模型和模型文件(之前不需要)中定义一个hasMany将belongsTo关联定义为UserProduct

看看CookBook,它在那里很好地解释:http://book.cakephp.org/view/1650/hasMany-through-The-Join-Model