Cake2からCake4の移行作業のコントローラー内メソッドで、$this->paginate()
を使った移行例です。
Cake2: paginate() でカスタムファインダーを指定するパターン例
$this->paginate = [
'findType' => 'customFinderName',
'id' => $id,
'name' => $name,
'limit' => 50,
'paramType' => 'querystring'
];
$this->set('data', $this->paginate('ModelName'));
$this->paginate = [
'findType' => 'customFinderName',
'id' => $id,
'name' => $name,
'limit' => 50,
'paramType' => 'querystring'
];
$this->set('data', $this->paginate('ModelName'));
$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));
// メソッド内に記述
$customFinderOptions = [
'id' => $id,
'name' => $name,
];
$settings = [
'finder' => [
'customFinderName' => $customFinderOptions,
],
'limit' => 50,
];
$this->set('data', $this->paginate($this->ModelNames, $settings));
// メソッド内に記述 $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