【发布时间】:2013-12-27 15:20:09
【问题描述】:
我想在 Symfony 2.3 中使用 Doctrine 来运行这个查询。但似乎 Doctrine 不理解 CASE 声明。任何人都可以帮忙吗?提前谢谢!
SELECT max(id) id, name
FROM cards
WHERE name like '%John%'
GROUP BY name
ORDER BY CASE WHEN name like 'John %' THEN 0
WHEN name like 'John%' THEN 1
WHEN name like '% John%' THEN 2
ELSE 3
END, name
【问题讨论】:
-
一般来说,尽量不要将 DQL(Doctrine 的查询语言)与 SQL 混淆 - DQL 是它自己的方言,只是以不同的方式处理事情,这会使 case 的实现变得非常混乱至少。这样做的一个优点是它迫使您在更合适的其他地方执行类似
case语句的业务逻辑。
标签: php mysql symfony doctrine-orm case-when