
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