DoctrineでNULLを最後に持ってくるようにsortする
参考
https://umebius.com/eccube/doctrine_mysql_null_last_sort/
https://stackoverflow.com/a/20538039
code:php
$qb
->addSelect('(case when p.rank IS NULL then 1 else 0 end) as HIDDEN rank_is_null ')
->orderBy('rank_is_null', 'ASC')
->addOrderBy('rank', 'ASC');;
ポイントはDoctrineのHIDDENを使用している点
DoctrineのHIDDEN
https://www.doctrine-project.org/projects/doctrine-orm/en/2.9/reference/dql-doctrine-query-language.html
https://qiita.com/Geany/items/067ad6d93a3195f3b27d
HIDDENは、Doctrine専用のキーワード
select時に名前を付けるが、結果としては表示させない
HIDDENを付けないと結果の構造が変わってしまうが、それを防ぐことができる