我想计算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')
在这种情况下,将使用顺序而不会出现语义错误并获得正确的结果。
答案 0 :(得分:1)
select方法将参数作为数组,例如:
$qb->select('e', '(e.likesCnt + e.additionalLikes) AS totalLikes')
$qb->orderBy('totalLikes', 'DESC')