Maybe you just need http://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