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

CakePHP
記事内に広告が含まれています。

一覧(ページングあり)データを取得する時に、順序用カラムが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
スポンサーリンク
シェアする
toogieをフォローする
タイトルとURLをコピーしました