Как я могу сохранить дополнительную информацию в CakePHP HABTM Join Table? - PullRequest
0 голосов
/ 30 марта 2011

В настоящее время я не могу сохранить запись в таблицу соединений HABTM вручную.У меня есть таблица, users_products, и я хотел бы сохранить всю дополнительную информацию о заказе (размер, количество, цвет и т. Д.) В этой соединительной таблице вместо создания отдельной.

Пользователь$ hasAndBelongsTo Product

Мой пользовательский код контроллера для этого:

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 Ответ

2 голосов
/ 30 марта 2011

Вам нужна hasMany через ассоциацию. Это работает так же, как HABTM, но вместо определения HABTM на User и на Product вы определяете hasMany для вашей модели соединения, а в файле модели (который вам раньше не требовался) вы определяете ассоциации ownTo. до User и до Product

Загляните в Кулинарную книгу, там очень хорошо объясняется: http://book.cakephp.org/view/1650/hasMany-through-The-Join-Model

...