CodeLab技術ブログ

プログラミング技術まとめ

[CakePHP2]group byしてカウントした結果をソートする場合はvirtualFieldsを使う

CakePHP2でgroup byしてカウントしたい場合は、find()メソッドのパラメータで以下のようにしますが、

'fields'=>['*,count(*) as Model名__count'],
'group'=>'グルーピングしたいカラム',

countでソートしようとするとエラーになります。
ですが、virtualFieldsを使うとうまくいくようです。

スポンサードリンク

スポンサードリンク

まず、find()する前にvirtualFieldsを設定します。

$this->Model->History->virtualFields['count']="count(*)";

find()メソッドの第二パラメータで

'group'=>'グルーピングしたいカラム',
'order'=>['count DESC'],

こんな感じにするとうまくいきました。


スポンサードリンク

スポンサードリンク

コメントは受け付けていません。