0
我有3个表结构...混淆HABTM在CakePHP
宋(ID,状态)
曲目(ID,song_id,artist_id,状态)
艺术家(编号,状态)
我希望有HABTM,所以我提到了...... 宋模型
var $hasAndBelongsToMany = array(
'Artist' => array(
'className' => 'Artist',
'joinTable' => 'tracklists',
'foreignKey' => 'song_id',
'associationForeignKey' => 'artist_id',
'conditions' => array('tracklist.status' => '1')
'with' => 'Tracklist',
//'unique' => true
),
);
艺术家型号
var $hasAndBelongsToMany = array(
'Song' => array(
'className' => 'Song',
'joinTable' => 'tracklists',
'foreignKey' => 'artist_id',
'associationForeignKey' => 'song_id',
'with' => 'Tracklist',
//'unique' => true
),
);
曲目型号 变量$属于关联=阵列(
'Song' => array(
'className' => 'Song',
'foreignKey' => 'song_id',
'dependent' => true
),
'Artist' => array(
'className' => 'Artist',
'foreignKey' => 'artist_id',
'dependent' => true
)
);
这种方式,但问题是,当我试图从艺术家表中找到它的所有查找记录没有任何条件的记录。
$artist_conditions = array('Artist.status' => '1');
$artist_list = $this->Song->Artist->find('list', array('conditions' => $artist_conditions));
我想只获取相关的曲目列表,并具有tracklist.status为1
那些艺术家。关系是否正确?或者我只是用hasMany(歌曲,艺术家)和属于(曲目列表)。
你是不是我的问题的要求明确。请阅读它..我们的代码几乎类似,你只是将递归添加到1.这不是解决方案。 – Tisha
如果您足够关注,您可以看到,解决方案是在曲目列表模型上调用查找功能,而不是Artist模型! 他们是非常不同的,请尝试一下,也许可以帮助你。 –