スポンサーリンク

[CakePHP1.2]id以外のカラムでアソシエーション

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があればいいのになぁ。なんかスマートじゃない。