尝试在 Doctrine2 中这样做:
...->createQuery('SELECT m.id, (m.status != 1) as verified...
但这会引发一个错误——如果我去掉括号,我会得到另一个错误。我如何实现这种 m.status 比较?
谢谢
最佳答案
Doctrine 2 不支持 SELECT 子句中的这些比较(至少不支持 2.3,不确定 2.4)。
您可以使用 CASE 表达式作为解决方法:
SELECT m.id, CASE WHEN m.status != 1 THEN 1 ELSE 0 END AS verified ...
或:
SELECT m.id, CASE WHEN m.status = 1 THEN 0 ELSE 1 END AS verified ...
如果您需要为 ORDER BY 子句(或类似的东西)verified
,但在结果中实际上不需要它,您可以使用 HIDDEN 表达式:
SELECT m.id, CASE WHEN m.status = 1 THEN 0 ELSE 1 END AS HIDDEN verified ...
一个完全不同的解决方案是写一个custom DQL function .
关于mysql - 在 Doctrine2 的选择中使用比较作为别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9041658/