Cake2からCake4の移行作業のコントローラー内メソッドで、$this->paginate()
を使った移行例です。
Cake2: paginate() でカスタムファインダーを指定するパターン例
$this->paginate = [ 'findType' => 'customFinderName', 'id' => $id, 'name' => $name, 'limit' => 50, 'paramType' => 'querystring' ]; $this->set('data', $this->paginate('ModelName'));
Cake2では $this->paginate
に配列として findType
キーを渡すようになっています。
Cake4: 上記の例を記述してみる
// メソッド内に記述 $customFinderOptions = [ 'id' => $id, 'name' => $name, ]; $settings = [ 'finder' => [ 'customFinderName' => $customFinderOptions, ], 'limit' => 50, ]; $this->set('data', $this->paginate($this->ModelNames, $settings));
書き方は色々ありますが、Cake4では finder
キーとしてカスタムファインダーを記述する箇所に注目です。あと、オプション引数として、$customFinderOptions
に渡したい引数を定義すれば読み手に伝わりやすいと思います。
モデルのカスタムファインダーの移行はどうすんの?についてはコチラをどうぞ。
■ Cakephp4: ページネーション: 高度な使用方法
https://book.cakephp.org/4/ja/controllers/components/pagination.html#id3