id以外のカラムでアソシエーションしたい場合。
こんな感じで一時的にprimaryKeyを変更する。
$this->{model}->primaryKey->='hoge_id';
使い終わったら戻しておきましょう。
$this->{model}->='id';
ちょっと納得いかないが、下記のように多段でアソシエーションしている場合はうまくいかなかった。
$this->{model1}->{model2}->primaryKey->='hoge_id'; $this->{model1}->find(....);
ちなみにmodel1のbeforeFindメソッドでmodel2のprimaryKeyを変更してもダメだった。
下記のようにusesにmodel2を登録しておいて直接指定する。
var $uses = array('model1','model2'); $this->{model2}->primaryKey->='hoge_id'; $this->{model1}->find(....);
$belongsToとかのパラメータにprimaryKeyがあればいいのになぁ。なんかスマートじゃない。