HABTMのページング処理

まっちー

まっちー

通常、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サイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。

Webサイト制作の実績・料金を見る

この記事のシェア数

プログラマのまっちーです。酒が大好きです。ある一定量のお酒を飲むと壊れたレディオモードに入り、同じことを繰り返す癖があります。宜しくお願いいたします。

このメンバーの記事をもっと読む
デザイン力×グローバルな開発体制でDXをトータル支援
お問い合わせ 会社概要DL