Doctrine 2 Order By ASC和Null值

时间:2014-05-02 04:02:15

标签: doctrine-orm sql-order-by

我正在尝试获取结果,我需要按升序排序。但是一些值将为null / empty,我需要在最后排序时从0 1 2开始,然后是null值。

我尝试过SortableNullsWalker但它没有帮助。我正在排序的值不是列,它是正在排序的两个值的乘法,这就是为什么我认为SortableNullsWalker不起作用。请帮忙

$dql = 'SELECT (column1 * column2) as distance FROM table)

                ORDER BY distance ASC ';

        $dq = $this->getEntityManager()->createQuery($dql);

结果显示为'', '', 0, 1, 2.334, ....

但我想说的是:0, 1, 2.334,......, '', ''

2 个答案:

答案 0 :(得分:8)

这是类似的解决方案,适用于非数字列/表达式:

<?php /* Template Name: White Page */ ?> 

答案 1 :(得分:6)

<强>解

我必须使用与距离相同的隐藏变量并在其前面添加minus(-),并在DESC order

中按新隐藏变量排序结果
$dql = 'SELECT (column1 * column2) as distance,
        -(column1 * column2) as HIDDEN distance1 
        FROM table
        ORDER BY distance1 DESC';

        $dq = $this->getEntityManager()->createQuery($dql);