SERVICE こんな事ができます

CNTACT ご相談はお気軽に

 ABOUT US こんな会社です



2008/06/27 by づや

CakePHPのbindModelとunbindModel

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とかを使用したことがなかったんだなぁ。