php - 在 Doctrine QueryBuilder OrderBy 中使用 IF 语句
问题描述
我正在尝试使用 Doctrine Query Builder 从表中获取数据并将结果排序为特定顺序。我试图在我的中使用 IF 语句,$qb->orderBy()
但这会导致语法错误。
这是我的 IF 语句代码:
$qb->select('approve')
->from(Approve::class, 'approve')
->orderBy("IF(approve.approverType = 'PLAN', 1,
IF(approve.approverType = 'QUOTE', 2,
IF(approve.approverType = 'POE', 3, 4)
)
)", 'ASC')
->addOrderBy('approve.approvalOrder', 'ASC');
$sql = $qb->getQuery()->getSQL();
$results = $qb->getQuery()->getResult();
语法错误:
[语法错误] 第 0 行,第 129 列:错误:预期的已知函数,得到 'IF'
按照这篇文章的建议,我用 CASE 替换了 IF 语句。但它仍然会导致语法错误。
$qb->select('approve')
->from(Approve::class, 'approve')
->orderBy("case when approve.approverType = 'PLAN' then 1 else
case when approve.approverType = 'QUOTE' then 2 else
case when approve.approverType = 'POE' then 3 else 4", 'ASC')
->addOrderBy('approve.approvalOrder', 'ASC');
$sql = $qb->getQuery()->getSQL();
$results = $qb->getQuery()->getResult();
语法错误:
[语法错误] 第 0 行,第 134 列:错误:预期的字符串结尾,得到“何时”
有谁知道这里发生了什么?如果你能指出我正确的道路,我真的很感激。
解决方案
推荐阅读
- callback - GridsearchCV 调整 KerasClassifier 与回调错误:ValueError:找到样本数量不一致的输入变量
- rest - 如何正确公开 Cassandra 实体的 REST API
- azure - 如何发布到安装在 Azure VM 上的 LogStash?
- java - 在循环中嵌套 try and catch
- angular - Angular 6 HttpClient返回类的实例
- ruby - Mongo Map-Reduce:按值对一定距离内的文档进行分组
- python - 如何计算文件夹中的子目录?
- c - 从文件中读取单词并将它们放入数组中
- sorting - 在 ElasticSearch 中对相同的字段名称进行搜索和排序
- android - 在每张图片上画出特定的形状,并一一展示