久しぶりの 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));
}
と書けばオッケーになるみたい.
でも,これまでって最初の方の記述でも大丈夫だった気がしたんだけど,気のせいなのかな?