mysql – 在select for Doctrine2中使用比较作为别名

试着在Doctrine2中这样做:

...->createQuery('SELECT m.id, (m.status != 1) as verified...

但是这会引发错误 – 如果我取消括号,我会得到另一个错误.我如何实现这种m.status比较?

谢谢

最佳答案 在SELECT子句中,Doctrine 2不支持这些比较(至少不高达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子句(或类似的东西),但在结果中实际上不需要它,您可以使用HIDDEN表达式:

SELECT m.id, CASE WHEN m.status = 1 THEN 0 ELSE 1 END AS HIDDEN verified ...

一个完全不同的解决方案是写一个custom DQL function.

点赞