2015-09-04 48 views
1

我寫下面的代碼來使用查詢生成器來構建查詢。CASE WHEN不工作doctrine2查詢生成器

  $em = $this->_em; 
      $qb = $em->createQueryBuilder(); 
      $qb->select('tbl'); 
      $qb->addSelect('COUNT(tbl.macId) AS totalInstallations'); 
      $qb->addSelect('COUNT(DISTINCT tbl.macId) AS uniqueInstallations'); 
      $qb->addSelect('COUNT(CASE 
          WHEN tbl.updatedOn IS NOT NULL THEN tbl.macId ELSE NULL 
          END) AS totalUninstallations'); 
      $qb->from('Entity\SoftwareInstallation', 'tbl'); 
      $result = $qb->getQuery()->getArrayResult(); 
      return $result; 

但它沒有在案件條件下工作。

我得到下面的錯誤:

Type: Doctrine\ORM\Query\QueryException

Message: [Syntax Error] line 0, col 152: Error: Expected Doctrine\ORM\Query\Lexer::T_FROM, got '.'

Filename: /var/www/html/ghostnew/application/vendor/doctrine/orm/lib/Doctrine/ORM/Query/QueryException.php

Line Number: 52

任何人都可以幫我解決這個問題。

謝謝。

回答

0

嘗試使用SUM()而不是COUNT()

看到這個答案:Doctrine 2 DQL CASE WHEN in Count

+0

雖然用SUM替換COUNT你的情況,在那裏工作似乎與DQL使用CASE部分的一個普遍問題。我在這裏打開了一個問題:https://github.com/doctrine/doctrine2/issues/5915隨意訂閱。 – webDEVILopers