2015-07-08 3 views
1

У меня проблемы с моделями CakePHP.CakePHP Многомерная модель

У меня есть три стола - CC_PLAYLIST, CC_PLAYLISTCONTENTS и CC_FILES.

Я хотел бы получить список всех плейлистов со всем их содержимым, а затем соответствующую информацию о файлах для каждой части содержимого плейлиста.

т.е.

Playlist 1 
-- Playlist Content 1 
---- File Info 
-- Playlist Content 2 
---- File Info 
-- Playlist Content 3 
---- File Info 
Playlist 2 
-- Playlist Content 123 
---- File Info 

В мой контроллер у меня есть: $playlistcontent = $this->AirtimePlaylist->find('all') однако, что, кажется, повернуть вверх плоский массив со всеми playlistcontents, все файлы и пустые плейлисте массивов.

enter image description here

AirtimeFile.php

class AirtimeFile extends AppModel { 

    public $useTable = 'cc_files'; 

    public $actsAs = array('Containable'); 
    public $hasMany = array('AirtimeFileAttribute' => array(
     'className' => 'AirtimeFileAttribute', 
     'foreignKey' => 'track_id' 
    )); 

} 

AirtimePlaylist.php

class AirtimePlaylist extends AppModel { 

    public $useTable = 'cc_playlist'; 

    public $actsAs = array('Containable'); 
    public $hasMany = array('AirtimePlaylistContent' => array(
     'className' => 'AirtimePlaylistContent', 
     'foreignKey' => 'playlist_id' 
    )); 

} 

AirtimePlaylistContent.php

class AirtimePlaylistContent extends AppModel { 

    public $useTable = 'cc_playlistcontents'; 

    public $actsAs = array('Containable'); 
    public $hasOne = array('AirtimePlaylist' => array(
     'className' => 'AirtimePlaylist', 
     'foreignKey' => 'id' 
    ),'AirtimeFile' => array(
     'className' => 'AirtimeFile', 
     'foreignKey' => 'id' 
    )); 

} 

ответ

1

В контроллере вам нужно для использования contain

$model = $this->AirtimePlaylist->find('all', 
    array(
     'contain' => array('AirtimePlaylistContent' => array('AirtimeFile')) 
    ) 
); 
+0

Пятно на - Спасибо вам за это. –

Смежные вопросы