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でアソシエーションさせる方法も探してみます。

以上です。

0 件のコメント:

コメントを投稿