原则查询生成器按 2 个字段的数量排序



我想计算 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')

相关内容

  • 没有找到相关文章

最新更新