I forgot to mention, I have worked out how to access some of the data, such as when I am adding a new playlist, how to access the tracks there:
function admin_add() { if(!empty($this->data)) { $this->cleanUpFields(); $this->Playlist->create(); if($this->Playlist->save($this->data)) { $this->Session->setFlash('The Playlist has been saved'); $this->redirect(array('action'=>'index'), null, true); } else { $this->Session->setFlash('The Playlist could not be saved. Please, try again.'); } } $tracks = $this->Playlist->PlaylistsTrack->Track->generateList(null,null,null, '{n}.Track.id', '{n}.Track.trackname'); $this->set(compact('tracks')); } But I just cannot figure out using $this->Playlist->read() how to get this data. When I print_r my returned array, all I get is this: Array ( [Playlist] => Array ( [id] => 6 [title] => New Test Playlist [comments] => ) [PlaylistsTrack] => Array ( ) ) Tane On 6/6/07, Tane Piper <[EMAIL PROTECTED]> wrote: > Hey folks, > > Asking about it on IRC, and looking on the group I think I have half > got my code working for what I need to to. A bit of background first: > > I have added a media player to my site, which is controlled from the > backend and outputs to XSPF for the player. > > First off, I have my Track controller. In this, the user can upload a > track (using a behaviour) and it creates and entry into the database. > I also have a Playlist controller, which so far I have used a hABTM > association to create playlists with selected tracks. So far so good, > it works well - but the problem was that when adding the tracks, they > would be in the order of the id within the Track table. > > So, I decided I needed a position field in my join table. Now, > looking on the group I can see this is not supported by standard > hABTM, so what I have done is below: > > I created the model for the PlaylistsTrack(s) table: > > <?php > class PlaylistsTrack extends AppModel > { > var $belongsTo = array('Playlist', 'Track'); > } > ?> > > I then changed the associations in my existing models to hasMany: > > <?php > class Playlist extends AppModel { > > var $name = 'Playlist'; > > //The Associations below have been created with all possible keys, > those that are not needed can be removed > > var $hasMany = array('PlaylistsTrack' => array('foreignKey' => > 'playlist_id')); > var $recursive = 2; > } > ?> > > <?php > class Track extends AppModel { > > var $name = 'Track'; > > var $hasMany = array('PlaylistsTrack'=> array('foreignKey' => 'track_id')); > var $recursive = 2; > } > ?> > > The problem is now, I'm not sure how to access the tracks for specific > playlists. For example, here is my current XSPF output method: > > function xspf($id = null) { > if(!$id) { > $this->Session->setFlash('Invalid Playlist.'); > $this->redirect(array('action'=>'index'), null, true); > } > $this->layout = 'xml'; > $this->Playlist->recursive = 2; > $this->set('playlist', $this->Playlist->read(null, $id)); > } > > This grabs the Playlist data, but it doesn't get any of the tracks. I > would appreciate any help on this. > > A second point in in my PlaylistsTrack model - I also want to be able > to read the order of a select field, and assign the position to each > 'join', so my table might look something like this: > > | playlist_id | track_id | position | > --------------------------------------------- > | 1 | 1 | 0 | > | 1 | 3 | 1 | > | 1 | 2 | 2 | > > Is there a simple way do do this, possibly in a beforeSave ? > > Thanks, > Tane > --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---