cakePHP4のページネーションで、1ページ当たり100件までしかデータが表示できない場合の対応方法

概要

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);

コメントする

CAPTCHA