我想计算 2 个字段的数量,并对结果进行排序。查询生成器的结尾是这样的:
$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',:错误: '总赞'没有定义。
任何解决方案都感激地接受:-(
更新:好吧,别名在"orderby"语句中是不允许的。此外,如果您的某个字段为 null,则金额也将为 null,这会导致语义错误。我的解决方案是:
$qb->orderBy('((e.likesCnt + e.additionalLikes)+0)', 'DESC')
在这种情况下,将应用排序而不会发生语义错误并获得正确的结果。
select 方法将参数作为数组获取,例如:
$qb->select('e', '(e.likesCnt + e.additionalLikes) AS totalLikes')
$qb->orderBy('totalLikes', 'DESC')