I added some logging just to make sure the relationships are unbound: $this->User->unbindAll(array('hasAndBelongsToMany' => array('HasAsFriend'))); $this->log("current habtm: " . print_r($this->User- >hasAndBelongsToMany, true));
The error log reads: 2008-05-08 17:03:49 Error: current habtm: Array ( [HasAsFriend] => Array ( [className] => User [joinTable] => friends [foreignKey] => user_id [associationForeignKey] => friend_id [uniq] => [conditions] => [with] => Friend [fields] => [order] => [limit] => [offset] => [unique] => 1 [finderQuery] => [deleteQuery] => [insertQuery] => ) ) Which indicates that those relationships are unbound successfully. But the habtmAdd still inserts into other tables: $this->User->habtmAdd('HasAsFriend', 1, 3); will result with SQL queries: 28 INSERT INTO `friends` (`user_id`,`friend_id`) VALUES (1,3) 29 SELECT `Friend`.`id` FROM `friends` AS `Friend` WHERE `friend_id` = 1 30 INSERT INTO `friends` (`friend_id`,`user_id`) VALUES (1,3) 31 SELECT `Family`.`id` FROM `families` AS `Family` WHERE `user_id` = 1 32 INSERT INTO `families` (`user_id`,`family_id`) VALUES (1,3) 33 SELECT `Family`.`id` FROM `families` AS `Family` WHERE `family_id` = 1 34 INSERT INTO `families` (`family_id`,`user_id`) VALUES (1,3) 35 SELECT `Block`.`id` FROM `blocks` AS `Block` WHERE `user_id` = 1 36 INSERT INTO `blocks` (`user_id`,`block_id`) VALUES (1,3) This is wierd. Is this a bug in cake or is it my misconfiguration in User model? On 5月8日, 下午4時41分, largon <[EMAIL PROTECTED]> wrote: > If I comment out other habtm relationships, leaving only > var $hasAndBelongsToMany = array( > 'HasAsFriend' => array( > 'className' => 'User', > 'joinTable' => 'friends', > 'foreignKey' => 'user_id', > 'associationForeignKey' => 'friend_id', > 'uniq' => false, > 'conditions' => '', > ), > ); > in my User model, then the save() will go flawlessly. > > However, if I leave those relationships in User model, then the data > is inserted into > other tables even if I manually unbindModel() them before calling > $this->User->save(). > > I'm confused. Is there anyone who knows why this is happening? Or > maybe I should > just use a $this->User->query() to do the saving job and insert the > data in the right table? :( > > On 5月8日, 上午6時13分, largon <[EMAIL PROTECTED]> wrote: > > > Hi, > > > I'm on a project that users can add other users as friends, families, > > or block them. > > So I've set up some habtm behaviors for that. The tables (friends, > > families, blocks) look > > very similar, all with (user_id, friend_id) or (user_id, family_id) as > > keys. > > > But when I save a data, like calling: > > $this->data['User']['id'] = 1; > > $this->data['HasAsFriend']['HasAsFriend'] = 2; > > $this->User->save($this->data); > > > I'll have not only user1 adding user2 as friend, but also user2 adding > > user1 as friend. > > What's more, they're each other's families and user1 is blocking user2 > > too. > > (The data got inserted into families table and blocks table too.) > > > I posted my user model relationships athttp://bin.cakephp.org/view/241705085 > > I also tried the behavior > > athttp://bakery.cakephp.org/articles/view/add-delete-habtm-behavior > > , > > but with the code: > > > $this->User->habtmAdd('HasAsFriend', 1, 2); > > > Also results the same as inserting into families table and blocks > > table. > > > I'm troubled, I'm not sure why this is happening. Any clues is greatly > > appreciated. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "CakePHP" group. To post to this group, send email to cake-php@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/cake-php?hl=en -~----------~----~----~----~------~----~------~--~---