CakePHPで各々のModelにアソシエーションを設定してて、
検索で使いたくないときはunbindModelを使うとはずせる。
Modelに定義してないけど、今回だけアソシエーションにしたい場合はbindModelで設定できる。
それは知っていたんだけど、unbindModelとbindModelを使用して、paginateを使用したら検索がうまくいかなかった。
paginateはcountのSQLを実行した後、中身を取るSQLを実行してくれるんだけど、
ログを見たらcountのSQLには指定したunbindModelとbindModelは適用されてるのだけど、2回目のSQLにはされてなかった。
試しに2回unbindModelとbindModelを実行したらうまくいったよ。
しかし、絶対もっといい方法があるよなぁとか思いつつ、model.phpのソースをみたら、
引数に$resetなるものが。
コメントはIf $reset is false, association will not be reset to the originals defined in the model
$resetにfalseを渡せばモデルで定義されたアソシエーションに戻りませんよって感じかな。
結局、$resetにfalseを渡してあげたらうまくいった。
そりゃ当然想定されてるよね。
今までページネーションが必要な時に、bindModelとかを使用したことがなかったんだなぁ。
L0QAkQ sdlfRnd6M2HvO4
mikle
said
2008/8/274:29:14