教义选择计数如果

时间:2016-05-27 12:19:36

标签: php symfony doctrine

我有那个查询,想把它翻译成学说

SELECT 
    ex.id,
    ex.title AS 'title of examination',
    SUM(IF(su.status_id = 2, 1, 0)) AS 'published surveys',
    SUM(IF(su.status_id = 1, 1, 0)) AS 'other surveys'
FROM
    examination ex
        LEFT JOIN
    survey su ON ex.id = su.examination_id
GROUP BY ex.id; 

我知道我可以使用$qb->select("[SQL_HERE]")但它不能用于其他数据库,只有我当前的(MySQL)。

那么,我如何将此查询编码为doctrine?

1 个答案:

答案 0 :(得分:1)

没有纯Doctrine交叉数据库解决方案,您可以:

  1. 创建自己的Doctrine函数或使用bundle (https://github.com/beberlei/DoctrineExtensions
  2. 或者您可以更改数据库,例如添加列published 可能有0或1的值(此列的值可能是 如果您想保留原始status_id,请按触发器更新 列)然后你可以使用纯粹的学说查询:

    SELECT SUM(published) as count_published FROM ...

  3. (类似于其他人可以使用另一列other ...)