I'm new to CakePHP and I'm trying to use the Containable behavior. My
model is pretty complex, with a HasAndBelongsToMany and some other
joins.

I've got my Artist Model, which HasAndBelongsToMany Song (join table
artists_songs).
Song HasAndBelongsToMany Artist, and HasMany Genre.

With an Artist, I'd like to list the artist name, and the genre of
songs they have:
Artist: Beatles
Genres: Pop, Rock.

I've gotten to the point where I can list the artist name and the
genres, but genre is coming up for however many songs the artist has.
If the artist has 5 songs, I'm ending up with this:
Artist: Beatles
Genres: Pop, Pop, Pop, Rock, Rock

I figured I'd use the Containable behavior and request DISTINCT
genre_id from Song. When I do this, I'm seeing the SQL query do this:
DISTINCT Song.genre_id, Song.genre_id

I figured this was because Containable is automatically grabbing the
foreign keys it needs to make this association, which is usually
awesome.

At the bottom of the documentation for Containable:
http://book.cakephp.org/view/474/Containable
There is mention of options to turn autoFields off, if you're having
problems with aggregating fields. This sounds like what I need, but
when i set autoFields to False, nothing is changing. It's still
grabbing the foreign keys and causing headaches.

One of the other options of Containable is turn Recursive on and off.
This works fine, but the boolean of autoFields just won't kick in, or
I am doing something wrong. Any advice would be greatly appreciated,
or maybe point me in the direction to get where I need to go!

--

You received this message because you are subscribed to the Google Groups 
"CakePHP" 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?hl=.


Reply via email to