Symfony 原则SQL查询顺序按ASC NULL Last

Symfony 原则SQL查询顺序按ASC NULL Last,symfony,doctrine,symfony-2.8,Symfony,Doctrine,Symfony 2.8,我使用原则2.4。我尝试按优先级升序排列活动列表,优先级为NULL,最后优先级为0 SELECT * FROM campaign ORDER BY priority IS NULL, priority = 0, priority ASC 你知道我怎么做吗 $query->addOrderBy('c.priority', 'ASC'); 我找到了解决方案,我做到了: $query->addSelect('CASE WHEN c.priority IS NULL THEN 1 ELS

我使用原则2.4。我尝试按优先级升序排列活动列表,优先级为NULL,最后优先级为0

SELECT * FROM campaign ORDER BY priority IS NULL, priority = 0, priority ASC
你知道我怎么做吗

$query->addOrderBy('c.priority', 'ASC');

我找到了解决方案,我做到了:

$query->addSelect('CASE WHEN c.priority IS NULL THEN 1 ELSE 0 END as HIDDEN priority_is_null');
$query->addSelect('CASE WHEN c.priority = 0 THEN 1 ELSE 0 END as HIDDEN priority_is_zero');
$query->addOrderBy('priority_is_null', 'ASC');
$query->addOrderBy('priority_is_zero', 'ASC');
$query->addOrderBy('c.priority', 'ASC');
$query->addSelect('CASE WHEN c.priority IS NULL THEN 1 ELSE 0 END as HIDDEN priority_is_null');
$query->addSelect('CASE WHEN c.priority = 0 THEN 1 ELSE 0 END as HIDDEN priority_is_zero');
$query->addOrderBy('priority_is_null', 'ASC');
$query->addOrderBy('priority_is_zero', 'ASC');
$query->addOrderBy('c.priority', 'ASC');