I have had a lot of problems with HABTM also. I'm convinced it's all bugged, and trying to find any solution to these simple problems leads you to workarounds and extra behaviors, which I don't consider solutions.
Have you tried leaving out the foreignKey and associationForeignKey and letting Cake apply them automatically? On Feb 23, 2:13 pm, villas <[EMAIL PROTECTED]> wrote: > @blogica. Everyone who has made HABTM work is a guru as far as I'm > concerned :) > > To test what is being returned, I'm simply putting this in my > controller view: > > $this->User->recursive = 1; > debug($this->User->findAll()); > > the Group array is always empty. > > Do I need to put more stuff in the model? > Can anyone share a working example? > > On Feb 23, 6:37 pm, "b logica" <[EMAIL PROTECTED]> wrote: > > > Oh, I'm by no stretch a Cake guru. I'm still working on my first app > > (porting over an existing site) in my spare time. But I'm trying to > > answer what questions I can so the gurus don't have to. Of course, > > corrections to any erroneous info I might give are more than welcome. > > > I think that part of the problem with the > > $associationForeignKey/$foreignKey is that, under some circumstances, > > it doesn't matter if they're reversed. I say that because I just did > > just that in one of my models and it showed no obvious effect. But (if > > I'm correct in that assumption) problems definitely will show up if > > there are other inconsistencies. > > > What I mean is, once the models, controllers, etc. are set up > > correctly, it may be that *sometimes* those values may be switched > > without showing any errors. But this will only be the case once > > everything's set up. Until then, if the values are switched, things > > will go wrong immediately. > > > I'm just talking out of my arse right now; none of this has been > > tested. But I can see for myself that switching the values doesn't > > cause any obvious error. > > > Actually, upon further thought, I think that it's not crucial for > > SELECT but that a save would fail miserably (or, more likely, have > > very inconsistent results). > > > As for your initial problem, you probably need to set the correct > > recursion. You can also look into using the Bindable behavior: > > >http://bakery.cakephp.org/articles/view/bindable-behavior-control-you... > > > On Sat, Feb 23, 2008 at 12:38 PM, villas <[EMAIL PROTECTED]> wrote: > > > > @blogica. Thanks for your reply and although you may be right about > > > the keys being reversed in my inital post, I had already tried them > > > both ways before posting. > > > > You are also right about other examples being confused. The CookBook > > > example seems to be wrong in a couple of ways and when I eventually > > > discover how this works, I'll be delighted to propose amendments. > > > > Until then, perhaps the best way for me to figure this out is by > > > copying someone's working code. Perhaps some kind soul would provide > > > the barest working example for me to copy. Otherwise, I hope blogica > > > or some other guru may provide an insight. > > > > On Feb 23, 4:56 pm, "b logica" <[EMAIL PROTECTED]> wrote: > > > > You have your keys reversed. > > > > > 'foreignKey' => 'user_id', > > > > 'associationForeignKey' => 'group_id', > > > > > This same thing has caught me up, over and over again, due to looking > > > > at the array and its keys from the wrong perspective. Rather than the > > > > keys & values be about Group they are more about User, as pertains to > > > > Group. I hope that makes sense. Just remember that the key with > > > > 'association' is for the 'other' model (ie. not the model for the > > > > present class but the one that is the key in the $hasAndBelongsToMany > > > > array. > > > > > A surprising number of examples out there have it reversed. I think > > > > there's an example in the docs somewhere that has it reversed, also. > > > > > On Sat, Feb 23, 2008 at 10:22 AM, villas <[EMAIL PROTECTED]> wrote: > > > > > > Cake 1.2 Beta / Php 5.xx / Firebird 2 > > > > > > I have never succeeded in making even the simplest HABTM association > > > > > work. I tried scaffold and reading everything I could and > > > > > experimenting different ways. Here is the simple setup: > > > > > > Users: id, name > > > > > Groups: id, name > > > > > Groups_Users: user_id, group_id > > > > > > Model: User.php > > > > > class User extends AppModel { > > > > > > var $name = 'User'; > > > > > var $useTable = 'users'; > > > > > > var $hasAndBelongsToMany = array( > > > > > 'Group' => array('className' => 'Group', > > > > > 'joinTable' => > > > 'groups_users', > > > > > 'foreignKey' => > > > 'group_id', > > > > > 'associationForeignKey' => > > > 'user_id', > > > > > 'unique' => true, > > > > > 'conditions' => '', > > > > > 'fields' => '', > > > > > 'order' => '', > > > > > 'limit' => '', > > > > > 'offset' => '', > > > > > 'finderQuery' => '', > > > > > 'deleteQuery' => '', > > > > > 'insertQuery' => '' > > > > > ) > > > > > ); > > > > > } > > > > > > When I use 'find' in my user controller and then dump the array, I > > > > > get the [user] array data, but [group] array is always empty. > > > > > > The debug message shows the SQL from two queries. When I run the > > > > > queries manually they each return data (from users and groups > > > > > respectively) as expected. > > > > > > I know it should be simple, but why can't I get the [group] array > > > > > populated from the queries. It has been driving me mad! > > > > > > Regards, villas --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Cake PHP" 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 -~----------~----~----~----~------~----~------~--~---