【问题标题】:OrderBy is not working with alias in doctrine symfony2OrderBy 不适用于学说 symfony2 中的别名
【发布时间】:2018-12-13 13:12:56
【问题描述】:

我需要什么

我需要排序别名。

symfony 代码

$qb->addSelect("(CASE WHEN  (priority LIKE  '%High%') THEN 1
       WHEN  (priority LIKE '%Medium%') THEN 2

       ELSE 3 END) AS  prioritys ");

排序代码

       priority  column name of view/table.

       prioritys  is alias.

      $qb->orderBy('priority','ASC');   //works because here im accessing column from table/view.

      $qb->orderBy('prioritys','ASC');   //doesnot works.

使用别名时出错

错误:[语义错误]第 0 行,第 173 列靠近“优先级 ASC”:错误:“优先级”未定义。

欢迎提出任何建议。

【问题讨论】:

  • doesnot works 表示您有任何错误吗?还是没有对结果进行排序?
  • 你也可以得到像$qb->getSql()这样的学说生成的原始查询,看看是否有问题,或者在你的数据库上运行这个原始查询来验证

标签: php oracle case symfony-2.8


【解决方案1】:
$qb->orderBy('prioritys','ASC');   // it should work, check symfony2 doc.

根据主要数据库,我们可以在 order by 子句中使用列别名。所以检查你的前端。

如果不支持,则按如下顺序使用 CASE 表达式

ORDER BY CASE WHEN priority LIKE '%High%' THEN 1 WHEN priority LIKE '%Medium%' THEN 2 ELSE 3 END

【讨论】:

  • 我前端不好。我可以建议下面的编码(如果列别名不按子句顺序工作) $qb->orderBy("(CASE WHEN (priority LIKE '%High%') THEN 1 WHEN (priority LIKE '%Medium%') THEN 2 ELSE 3 END)");
  • 所以它给出错误错误:预期的字符串结尾,得到'CASE'
猜你喜欢
  • 1970-01-01
  • 2013-03-12
  • 1970-01-01
  • 1970-01-01
  • 2013-03-27
  • 1970-01-01
  • 1970-01-01
  • 2013-02-13
  • 1970-01-01
相关资源
最近更新 更多