No.385
【CakePHP3】paginatorのデフォルトソート条件
paginatorの機能は生かしつつデフォルトソートをしたい
ぱっと思いつくのはfind時にorderや無名関数を使うことだろうけど、そうするとソート順が固定になってしまう。
もちろんpaginatorのソート指示があるときは無視するなど、判定式で処理を分岐させればできるけど、いまいちスマートじゃない。
そんなときはCakePHP2のころからの伝統、$this->paginateを利用すればOK。
設定
コントローラーのプロパティ$paginateのorder項目にソート順を記述してあげれば良い。
public $paginate = [
...
'order' => [
'デフォルトソート対象' => 'asc or desc'
],
...
];
もちろんパラメータsortが来ればそちらが優先される。ご安心。
参考:その他の設定
他にも$paginateはいろいろなデフォルト設定ができる。
など。