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行目)ことも可能。
両方指定した場合には関数内で個別指定した件数が優先される。
コメント