CakePHP2で、CASEやCONCATなどを使ってテーブルに存在しないフィールド名でソートを行う場合、例えば下記のようにすると思います。 <?php $params = [ 'fields' => ['CASE WHEN User.age >= 20 then 1 else 0 END AS adult'], 'order' => ['adult DESC'] ]; find('all', $params); 通常のfindであれば問題ないですが、ページングのorderでこのフィールドを指定しても効いてくれません。 このような場合は、モデルのバーチャルフィールドを利用します。 <?php //コントローラの中でUserモデルを利用 $this->User->virtualFields['adult'] = 'CASE WHEN User.age >= 20 then 1 else 0