试着在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.