独自のページング
ページネーションの為に特別なクエリを利用する事ができます。
コントローラのpaginateメソッドではレコードの件数をモデルのfind('count',$options)メソッドで取得し、レコードのデータはfind('all',$options)メソッドで取得しています。また独自の検索を行う事が出来るような仕組みも備えています。
モデルに実装
独自の検索を伴うページネーションを行うには、対象となるモデルにpaginateCountメソッドとpaginateメソッドを実装します。
コントローラのpaginateメソッドはモデルにpaginateCountメソッドとpaginateメソッドがあるかどうか調べ、find('count',...)メソッドの代わりにpaginateCountメソッド、find('all',...)メソッドの代わりにpaginateメソッドを優先して利用します。
class Sample extends AppModel function paginateCount($conditions, $recursive){ //レコード件数を取得するコードを記述 return $count; } function paginate($conditions, $fields, $order, $limit, $page, $recursive){ //レコードを取得するコードを記述 return $records; }
テーブルを使用しないモデル
テーブルを使用しないモデルでもpaginateCountメソッドとpaginateメソッドをきちんと動くように実装していればページネーション機能を利用出来ます。
ファイルやWebサービスのデータを扱う時などに使えます。