【发布时间】:2017-06-11 13:28:19
【问题描述】:
我想计算 2 个字段的数量,并对结果进行排序。 查询构建器结束如下:
$qb->orderBy('(e.likesCnt + e.additionalLikes)', 'DESC')
我得到了这个错误:
在渲染模板期间引发了异常 ("[Syntax Error] line 0, col 264: Error: Expected end of string, got 'e'")
最后一次尝试是什么时候:
$qb->select('e, (e.likesCnt + e.additionalLikes) AS totalLikes')
$qb->orderBy('totalLikes', 'DESC')
但它也会带来错误
在渲染模板期间引发了异常 ("[Semantical Error] line 0, col 290 near 'totalLikes DESC,': 错误: 'totalLikes' 未定义。")
感激地接受任何解决方案:-)
更新: 好吧,“orderby”语句中不允许使用别名。此外,如果您的字段之一为空,那么金额也将为空,这会导致语义错误。我的解决方案是:
$qb->orderBy('((e.likesCnt + e.additionalLikes)+0)', 'DESC')
在这种情况下,将应用排序而不会出现语义错误并获得正确的结果。
【问题讨论】:
-
将您的交流结果添加到您的选择中(例如
->select('e.likesCnt + e.additionalLikes', 'totalLikes')并按此排序 (->orderBy('totalLikes', 'DESC');) -
你能显示所有查询吗?
-
@ImanaliMamadievthanx 的帮助,但问题已用我的解决方案更新
-
@Roland,你为什么不使用我的答案?还是我的答案无效?
-
@ImanaliMamadiev 你的答案是错误的。第一条评论有原因。请自行检查
标签: doctrine-orm