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が空になってた。
なので、
としたら、うまくカウンターキャッシュが動いてくれた。
ほんとかどうか自信がないや。
使い方が間違ってるのかもしれない。
HTMLコーディングしてて、ファイルをPHPにしてプレビューしたら、エラーが出たよ。
調べてみたら、どうやら一行目のXML宣言がまずかったみたい。
こいつの?の部分をPHPが認識してしまって、エラーが起きるみたいだ。
なので、echoで呼ぶようにしたら問題無く表示されました。
やはりデザイナーがPHPをいじると、しょうもない所でつまづくなぁ。
外部ファイルをincludeしたい場合に、絶対パスではなくて、サイトルートからのパスで取得したい場面に出くわしました。調べたら、PHPにはサイトのルートを返してくれる便利なものがあるんですね。
こいつで一発でした。
覚えておこうっと。