独自のページング

ページネーションの為に特別なクエリを利用する事ができます。
コントローラの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サービスのデータを扱う時などに使えます。

CakePHP Note (v1.3)

Index