Doctrine QueryBuilder按2个字段的顺序排序

时间:2017-06-11 13:28:20

标签: doctrine-orm

我想计算2个字段的数量,并按结果排序。 querybuilder的结尾如下:

$qb->orderBy('(e.likesCnt + e.additionalLikes)', 'DESC')

我收到了这个错误:

  

在渲染模板期间抛出了异常   (“[语法错误]第0行,第264行:错误:字符串的预期结束,得到   的 'e'“)

上次尝试的时间是:

$qb->select('e, (e.likesCnt + e.additionalLikes) AS totalLikes')
$qb->orderBy('totalLikes', 'DESC')

但它也带来了错误

  

在渲染模板期间抛出了异常   (“[语义错误]第0行,第290行'totalLikes DESC':'错误:   “totalLikes”未定义。“)

感激地接受任何解决方案: - )

更新 好吧,“orderby”语句中不允许使用别名。此外,如果您的某个字段为null,则该数量也将为null,这会导致语义错误。我的解决方案是:

$qb->orderBy('((e.likesCnt + e.additionalLikes)+0)', 'DESC')

在这种情况下,将使用顺序而不会出现语义错误并获得正确的结果。

1 个答案:

答案 0 :(得分:1)

select方法将参数作为数组,例如:

$qb->select('e', '(e.likesCnt + e.additionalLikes) AS totalLikes')
$qb->orderBy('totalLikes', 'DESC')