Qbilinux 日記

Linux に関係することだけではなく,最近は一般的なコンピュータやガジェット関係についても記載してます.

cakephp での paginate 時の sort

久しぶりの cakephp ネタ.

cakephp での paginate 時の sort ですけど,$query を指定してから $this->paginate($query) する場合,$query 中に order を記述すると template 側で sort しようとしてもできないみたいですね.ということで少し試行錯誤.

$this->paginate でコントロールできるので,そっちでデフォルトの order を記載してみたところ,template 側で sort できるようになりました.

記述例としてはこんな感じかな?

    public function index()
    {
        $query = TableRegistry::get('Posts')->find()
               ->order(['Posts.created' => 'desc']);

        $this->set('artists', $this->paginate($query));
    }

だと template から $this->Paginator->sort('title') とかでソートできないけど.

    public function index()
    {
        $this->paginate = [
            'order' => ['Posts.created' => 'desc']
        ];

        $query = TableRegistry::get('Posts')->find();

        $this->set('posts', $this->paginate($query));
    }

と書けばオッケーになるみたい.

でも,これまでって最初の方の記述でも大丈夫だった気がしたんだけど,気のせいなのかな?