Whoops, I forgot to mention that each other model should have a hasMany
relation with the JoinModel, and the JoinModel should belongTo each of
the other three models.  I think I might have implied that, but better
to explicitly come out and say it.

I think this method would ideally allow for an n-way join table, not
limited to 2 like the HABTM relations are.

henthoca wrote:
> I had ran into this situation a while back, trying to figure out how to
> do a three-way join table.  I believe gwoo helped me figure out that it
> was best to create an extra model that belonged to the other three
> models, instead of trying to do crazy HABTM join querys.
>
> My three models were Resources (rooms), Users and Groups (permissions).
>  Each user has a certain set of permissions per resource. Eg, User A is
> an Teacher for Room A and a Student for Room B.  Then I made an extra
> model ( I named mine GroupsResourcesUser ) to store just the primary
> id's of each of the other three tables, and set all of those as the
> primary key in my new table.
>
> This method lets you pick one side and see which other sides it has,
> like pick a User and see for which Projects the User has each Role, or
> pick a Project to see which Users have each Role for that Project, or
> pick a Role to see which Users have that Role for each Project.
>
> For example, finding the Project-Role combinations for a particular
> (maybe logged in) user, I'd set $this->User->recursive = 3; and just
> use $this->User->findById($id); to get the data.  It'll be in the form,
> $data['JoinModelName']['TargetModel1'] etc, so you should be able to
> capture the relationships that way.
>
> It seems to work well enough for me. LMK if I need to explain it better
> though.


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Cake 
PHP" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/cake-php
-~----------~----~----~----~------~----~------~--~---

Reply via email to