mysql - 在 Doctrine2 的选择中使用比较作为别名

标签 mysql doctrine doctrine-orm

尝试在 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/

相关文章:

php - Doctrine transactions - 计算未决请求的数量

c# - 如何使用 Windows 窗体应用程序检索 ComboBox 中的数据库表?

php - 从 session 中选择要插入在此 session 中创建的表中的用户 ID

用于 SharePoint (WSS) 持久性的 MySQL

symfony - 在 Symfony 3 中获取 SQLFilter 内的用户

php - Symfony、查询生成器、使用 pgsql 的扩展

mysql - 禁用Doctrine 1.2中的自动Id字段生成

mysql - 嵌套 JOIN 创建自定义动态列

symfony - 教义可上传: Multiple file upload on the same entity

php - 如何使用 PHPUnit 测试 Symfony2 模型