私は3つのテーブル構造を持っています...
SONG(id、status)
トラックリスト(id、song_id、artist_id、status)
ARTIST(id、status)
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
),
);
トラックリストモデルvar$belongsTo = array(
'Song' => array(
'className' => 'Song',
'foreignKey' => 'song_id',
'dependent' => true
),
'Artist' => array(
'className' => 'Artist',
'foreignKey' => 'artist_id',
'dependent' => true
)
);
この方法ですが、問題は、Artistテーブルからレコードを検索しようとすると、条件なしですべてのレコードが検索されることです。
$artist_conditions = array('Artist.status' => '1');
$artist_list = $this->Song->Artist->find('list', array('conditions' => $artist_conditions ));
トラックリストに関連し、tracklist.statusをとして持つアーティストのみを取得したいと思い1
ます。関係は正しいですか?または、hasMany with(Song、Artist)とBelongsTo with(Tracklist)を使用します。