1.1にもあったのかもしれないけど、1.2はModelにcounterCacheって便利な機能がある。
modelがアソシエーションしてるときに、model名_countってカラムを用意しといて、
bindModelのときに’counterCache’ => trueを指定しとくと、勝手に数を数えて増減を登録してくれらしい。
詳しい説明はここにある。
使ってみたけど、たしかに便利。
でもこれを使ってると、bindModel($params, $reset = true)の$reset=falseが効かなくなるのね。
なので、うまくつかわないと$this->paginateが使えなくなっちゃうね。
※この記事参照
僕の書き方が悪かったんだけど、いきなり動かなくなるからあせった。
ソース読んでないからなんともいえないけど、両立する方法もあるのかな。
※追記
使いたいときだけ下記のようにmodel内でbindModelしてつかってた。
で、save()の時はうまく動いてたんだけど、del()の時はうまく動かなかった。
modelのソースを見たら、下記のようにカウンターキャッシュのメソッド(updateCounterCache())を読んでた。
del()の時は、delete分の前にselectを読んでるので、その時点でbindModelの情報がなくなってたみたい。
$this->belongsToが空になってた。
なので、
としたら、うまくカウンターキャッシュが動いてくれた。
ほんとかどうか自信がないや。
使い方が間違ってるのかもしれない。