2012年9月4日火曜日
【cakephp】id以外の主キーでアソシエーションしたい時
ちょっとハマったのでメモ書き程度に書いておきます。
二つのモデルを主キー以外でアソシエーションしたいことがあり、いろいろ頑張ってみたものの
どうしても主キーでアソシエーションしようとされるためうまくいかなかった。
いろいろ試してみて、belongsToではなくfindのoptionsで指定すると思い通りに実装できた。
joinsの指定の例は以下の通り。
$params = array(
'conditions' => array('検索条件など'),
'joins' => array(
0 => array(
'type' => 'LEFT',
'table' => 'users',
'alias' => 'User',
'conditions' => 'User.username = Example.name,
),
),
);
※joinsは2次元配列にしないとうまくいかないので注意!
途中でSQL文を書いてqueryで実行することもやった。
しかし、検索条件を変えたいときに不便だったので断念。。。
ただ、しっかり動くSQL文を書いたおかげでjoinsの指定はすぐ出来たので結果オーライということで!
この方法は回避にしか過ぎない気がするのでちゃんとbelongToでアソシエーションさせる方法も探してみます。
以上です。
登録:
投稿 (Atom)