EC-CUBEでNULL(未入力)が最後になるようソートするのって、少し難しいですよね?

MySQLではNULLは最小の値として扱われるという仕様があり、通常rankをASCで並び替えるとNULL→1→2というようにソートされます。

一方、PostgreSQLの場合は「NULL LAST」がデフォルトですので、rankをASCで並び替えると1→2→NULLという順番でソートされます。

MySQLで昇順かつ、NULLを最後に持ってきたい時のクエリビルダはCASE文を用いて次のようになります。

rank_is_nullはrankがNULLの場合は1になり、NULLでない場合は0になります。
HIDDENなカラムをSELECTし、最初にorderByするのがポイントです。

これで項目がNULLの場合(=未入力)最後に持ってくるようソートができました。
CASE文が苦手が方もいると思いますが、これを期にマスターください!

関連するカスタマイズ

Your proxy directory “/var/www/src/Eccube/..... SSHからマイグレーションなどapp/consoleのコマンドを実行しようとした際に、ドクトリンのキャッシュファイルを書き込めないために発生するエラーです。 通常app/cache/doctrine/proxiesは所有者もグループもapacheとなるため、コマンドラインから他のユーザ...
Twig内で文字列の一部分を切り出す方法 Slice使用... twigテンプレート内で文字列の一部を切り出したい時があります。 そんな時はsliceフィルタを使用してtwig内だけで切り出しを実行することが可能です。 2文字目以降を切り出す(1文字目を削除) sliceフィルタの第1引数は開始位置です。 sliceフィルタにはシンタックスシ...
メーカープラグインのメーカー一覧を取得する方法... メーカープラグインを使用される方が多いと思います。 メーカーの一覧を表示したい場合は次のようにメーカープラグインのレポジトリクラスでfindByすることで取得が可能です。 Controllerなどで使える実際のコード 全件取得するのでfindByの第1引数は空の配列、第2引数はソート順...
基本税率を切り捨て、切り上げ、四捨五入に変更... 開発メンバー全員のルールを揃えておくことが重要です。 dtb_tax_ruleテーブルのcalc_ruleの設定値は次の表の通りです。 calc_rule 方式 1 四捨五入 2 切り捨て 3 切り上げ これをマイグレーションで...