我有一个模型调用播放列表。 播放列表有一个带跟踪的HABTM
public $hasAndBelongsToMany = array(
'Track' => array(
'className' => 'Track',
'joinTable' => 'tracklists_tracks',
'foreignKey' => 'tracklist_id',
'associationForeignKey' => 'track_id',
'unique' => 'keepExisting',
'conditions' => '',
'fields' => array('id','title','version'),
'order' => 'TracklistsTrack.timing'
)
);
Track有一个带AppUser的HABTM
public $hasAndBelongsToMany = array(
'Artist' => array(
'className' => 'AppUser',
'joinTable' => 'artists_tracks',
'foreignKey' => 'track_id',
'associationForeignKey' => 'artist_id',
'unique' => 'keepExisting',
'conditions' => '',
'fields' => array('id','username')
)
);
现在,我想,当我写这个
$ tracklist = $ this-> Tracklist-> findById($ id);
为每个曲目列表获取所有曲目(这确实可以正常工作),并为每个曲目获取所有AppUsers(级联)。
请注意,如果我写$ this-> Track-> findById($ id); 我实际上可以获得与赛道相关的AppUsers
由于我勤奋的命名惯例,有没有想过这个开箱即用?
谢谢
答案 0 :(得分:0)
如果您在模型中定义了正确的关系,我建议使用CakePHP可包含的行为。
http://book.cakephp.org/2.0/en/core-libraries/behaviors/containable.html
您需要做的就是在模型中包含行为并将以下内容放入控制器
$this->TrackList->contain(array('AppUser','Artist'));