eyecatch_cakephp_20160912_cmp

CakePHP

CakePHP2.3.6 paginatorのソート(ORDER BY)で、NULL値を後にする方法。

2015/01/11

一覧(ページングあり)データを取得する時に、順序用カラムがNULLの場合はNULLが先に来て、1番データ、2番データ・・・と続きます。

NULL値を数値のあとに表示させたいって場合はどうするのか、というのを調べると、
MySQLでは ORDER BY に IS NULL を指定すれば可能
です。

例を挙げるとこんな感じ。
sort_order カラムに、順序用数値があるとします。

で、これをCakePHP2.3.6で指定しようとすると、多分、こう書けばOK・・・。

だと思ったのですが、全然うまく行きません。

'Member.sort_order' => 'ASC' の方はSQLとして認識してくれるのですが、 IS NULL の方はさっぱり。

何でやなんでやとあれこれやった結果、以下の書き方ではうまくいきました。

SQL文を文字列で渡すと正常動作。
結果を見た時、マジで吹き出しました。

なんなんだそりゃ。
普通は配列で渡すと思うやん! 数時間費やしてしまいましたよ・・・。

結論
// NULLを後にする場合は、配列ではなく文字列で指定!

-CakePHP
-, , , ,