通常、CakePHPでページング処理をしたい場合は
$this->paginate('Model');
で簡単にできる。
HABTMの場合でも基本的にはこれを使えばOKだが、HABTMの中間テーブルのモデルを作ってやる必要が出てきたりするので、ちょびっとだけ戸惑う。
たとえばユーザーとカテゴリを紐づけているcategories_usersというテーブルがあった場合
$this->CategoriesUser->bindModel(array('belongsTo' => array('Category')), false);
$this->paginate = array(
'conditions' => array(
'CategoriesUser.user_id' => 1,
));
$this->set('data', $this->paginate('CategoriesUser'));
こんな感じに書くと、IDが1のユーザーが持っているカテゴリの一覧のページング処理ができる。
bindModelが結構大事。ユーザーとカテゴリはすでにHABTMで結びついているじゃんとか思ってbindModelを書かないと、ページング処理は上手くいかない。
もちろん、モデルにCategoriesUser.phpファイルを作るのも忘れずに。
余談だけど、bindModelとかunbindModelって、どうも配列の書き方がしっくり来ないよね…?
LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。