概要
cakePHP4のページネーションで、1ページ当たり100件までしかデータが表示できない場合の対応方法について解説します。
前提環境
- Hosting Server: さくらインターネット
- PHP: 7.4.9
- cakePHP: 4.1.1
コードのポイント
cakePHP4ではPaginatorComponentによる1ページの表示件数の上限がデフォルト値で100件になっています。このため「maxLimit」を使って上限数を変更する必要があります。
CookBook:ページネーション「1ページあたりの最大行数を制限する」
ページネーションは一覧画面でよく使用されますが、一覧画面の表示件数をユーザーが変更できる機能が設けられていることがあります。このとき、ユーザーが10,000のような大きな数字を設定すると、サーバーに大きな負荷がかかってしまいます。
アプリ開発者が上限数を設定すればよいのですが、必ずしも設定するとは限りません。そのためフレームワーク側でデフォルト値を設けています。
サンプルコード
// 商品検索のクエリ
$itemQuery = $this->Items->find();
// ページネータの処理
$paginate = [
'limit' => 50, // ユーザーが指定可能な数字
'maxLimit' => 150, // アプリ側で制限する上限値
];
// ページネーションの設定
$items = $this->Paginator->paginate($itemQuery, $paginate);