ギルド開発
ギルド開発
2010.01.14

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って、どうも配列の書き方がしっくり来ないよね…?