2015-03-13 122 views
1

我想將其轉換爲Doctrine2。如何將SQL查詢轉換爲Doctrine2?

類似這些問題:
Symfony2/Doctrine2 - How to convert this SQL request with QueryBuilder?
How to convert a complex MySQL Query to Doctrine2
Convert SQL to Doctrine 2 Query Builder or DQL by using NOT IN?

這可能嗎?

SELECT 
SUM(q.amount) 

FROM(
SELECT amount 
    FROM expense_report e0_ 
    WHERE 
     (e0_.is_account_transfer = 0) 
      AND (e0_.remove_date IS NULL) 
    LIMIT 0, 2) q 

感謝

+0

(通過幫助和改進評審隊列) - 改進標題,增加對類似問題的參考 – 2015-03-13 17:44:33

+0

Hi @ user783029,您對我的解決方案有何看法? – Matteo 2015-03-18 10:56:34

回答

0

你可以用這個定製庫方法存檔您的問題:

public function getAmount() 
{ 
    $qb = $this->createQueryBuilder("q"); 
    return 
     $qb 
      ->select("sum(q.amount)") 
      ->where($qb->expr()->isNull('q.remove_date')) 
      ->andWhere('q.is_account_transfer = 0') 
      ->setFirstResult(0) 
      ->setMaxResults(2) 
      ->getQuery() 
      ->getSingleScalarResult(); 
} 

,簡單地使用它,因爲例如,在控制器的方法:

public function testAction() 
{ 
    .... 
    $totalAmount = $this->getDoctrine() 
         ->getRepository("AcmeDemoBundle:ExpenseReport") 
         ->getAmount(); 
    ... 
} 

希望得到這個幫助

+0

這是不可能的,SUM不使用OFFSET – 2015-03-18 16:19:31

+0

奇怪!我試了代碼,我會盡快檢查... – Matteo 2015-03-18 16:21:42

+0

對不起@ user783029你是對的,我還沒有測試過主要的東西......到目前爲止我還沒有任何新的想法......如果你找到了或我/你會找到一個解決方案讓我知道! – Matteo 2015-03-18 16:33:35