In addition set recursive to -1. Automagical fechting of related
models is well, something for scaffold and testing, nothing for
production applications imho. Its slow.
See Containable (or contains) as mentioned above, Linkable (on GitHUB)
or Complex Find Conditions (with "joins") to fetch deep associations.

King regards
 Jonas aka ionas82

On Oct 17, 5:56 am, KyleKai <[email protected]> wrote:
> Maybe you just needhttp://book.cakephp.org/view/474/Containable....
>
> On 10月17日, 上午11時08分, "[email protected]" <[email protected]>
> wrote:
>
> > Ok this is what I have set up:
>
> > Artist -> hasMany Album
> > Album -> belongsTo Artist
> > Album -> belongsTo Label
> > Album-> hasMany Track
> > Label-> hasMany Album
> > Track-> belongsTo Album
>
> > so fa so good....
>
> > I provide the name of the Artist and the name of the Album and want to
> > get results from each table:
>
> > $this->Album->find('all', array('conditions' => array('Album.slug'=>
> > $thisAlbum, 'Artist.slug'=>$thisArtist), 'fields'=>array('Album.name',
> > 'Artist.name', 'Label.name'), 'recursive'=>1));
>
> > This the array I get:
>
> > Array
> > (
> >     [0] => Array
> >         (
> >             [Album] => Array
> >                 (
> >                     [name] => The Art Of Breaking
> >                     [id] => 1
> >                 )
>
> >             [Artist] => Array
> >                 (
> >                     [name] => Thousand Foot Krutch
> >                 )
>
> >             [Label] => Array
> >                 (
> >                     [name] => Tooth & Nail
> >                 )
>
> >             [Track] => Array
> >                 (
> >                     [0] => Array
> >                         (
> >                             [id] => 1
> >                             [album_id] => 1
> >                             [name] => Hand Granade
> >                             [lyrics] =>
> >                             [slug] => handgranade
> >                             [created] => 2009-10-16 22:09:19
> >                             [modified] => 0000-00-00 00:00:00
> >                         )
>
> >                     [1] => Array
> >                         (
> >                             [id] => 2
> >                             [album_id] => 1
> >                             [name] => Breathe
> >                             [lyrics] =>
> >                             [slug] => breathe
> >                             [created] => 2009-10-16 22:55:16
> >                             [modified] => 0000-00-00 00:00:00
> >                         )
>
> >                 )
>
> >         )
>
> > )
>
> > Which is what I want.. except that I cannot specify what fields I want
> > to select in the table Tracks, because it's a separate query.
>
> > Look at the queries:
>
> > First:
>
> > SELECT `Album`.`name`, `Artist`.`name`, `Label`.`name`, `Album`.`id`
> > FROM `albums` AS `Album` LEFT JOIN `artists` AS `Artist` ON
> > (`Album`.`artist_id` = `Artist`.`id`) LEFT JOIN `labels` AS `Label` ON
> > (`Album`.`label_id` = `Label`.`id`) WHERE `Album`.`slug` =
> > 'theartofbreaking' AND `Artist`.`slug` = 'thousandfootkrutch'
>
> > Second:
> > SELECT `Track`.`id`, `Track`.`album_id`, `Track`.`name`,
> > `Track`.`lyrics`, `Track`.`slug`, `Track`.`created`,
> > `Track`.`modified` FROM `tracks` AS `Track` WHERE `Track`.`album_id` =
> > (1)
>
> > Is there a way to tell find() what fields in Track to select? Do I
> > have to do another find()?
> > The only thing I can think of is to do recursive = 0 and run another
> > find() for Track.
--~--~---------~--~----~------------~-------~--~----~
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=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to