Cakephp find返回多个HABTM关系
我有一个模型通话播放列表。 播放列表中有一个带有曲目的HABTMCakephp find返回多个HABTM关系,cakephp,Cakephp,我有一个模型通话播放列表。 播放列表中有一个带有曲目的HABTM public $hasAndBelongsToMany = array( 'Track' => array( 'className' => 'Track', 'joinTable' => 'tracklists_tracks', 'foreignKey' => 'tracklist_id', 'associationForeignKey
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
要获取每个轨迹列表中的所有轨迹,这确实会按照预期工作,对于每个轨迹,所有应用程序用户都会层叠
注意,如果我写$this->Track->findById$id;
我实际上可以获得与该曲目相关的应用程序用户
多亏了我勤勉的命名约定,有什么想法可以让这个开箱即用吗
谢谢如果您在模型中定义了正确的关系,我建议您使用CakePHP containable行为 您所需要做的就是将行为包括在模型中,并将以下内容放入控制器中
$this->TrackList->contain(array('AppUser','Artist'));
你能把两种型号都写下来吗?我对AppUser和Artist有点困惑。建议:通常你应该将你的HABTMs转换成hasMany,就像一个连接模型,以获得更好的灵活性。HABTMS变得非常难以管理,你可以阅读:当然,所以艺术家只是一个别名,我使用AppSube,因为一个轨道将有艺术家,但也是混合器,都是Appulr.Tab思:第一个HabTM秒和连接表是第一秒秒。您的模型将分别为第一、第二和第一、第二。First有许多FirstsSecond,Second有许多FirstsSecond,FirstsSecond属于First,Second。在这些关联之后使用Containeable,检索和保存复杂联接的数据变得非常简单。还要确保你的数据库设计是好的,你不是在寻找一个三元关系-