Pagination(ページネーション)を利用したデータ取得方法【CakePHP4】

Cakephpではページネーション(ページ送り)の設定を柔軟に行うことが可能です。

今回はデータの取得方法をメモ。

コード

use Cake\ORM\TableRegistry;
・・・

class ArticlesController extends AppController
{
   
  //コントローラー共通の各ページでの表示件数指定
  public $paginate = [
        'limit' => 10,
  ];

  public function index(){
  $articlesTable = TableRegistry::getTableLocator()->get('Articles');

      //各ページの表示件数指定は関数内で個別に行うことも可能
      $this->paginate['limit'] = 20;

      // 記事取得(件数は関数内で指定した20件となる)
      $query = $articlesTable
         ->find()
         ->order(['modified' => 'DESC']);
       $articles = $this->paginate($query);

       $this->set(compact('articles'));
   }
}

解説

「paginate($query)」とする(18行目)ことでページネーションが設定される

ページごとに表示する記事件数は、Controller内で共通で指定する(5~7行目)ことも、関数内で個別指定する(11行目)ことも可能。

両方指定した場合には関数内で個別指定した件数が優先される。

コメント

タイトルとURLをコピーしました