2016-06-01 42 views
1

我想與用戶總和每個用戶在教義集團通過Symfony2的

各量的總和所有的量,這是我原來的代碼

public function getUserForThisTask($projectId) 
{ 
    $qb = $this->createQueryBuilder('t') 
     ->select('t.createdby','t.totalhour') 
     ->where('t.project = :project_id') 
     ->setParameter('project_id', $projectId); 
     return $qb->getQuery() 
       ->getResult(); 
} 

這將返回

user  hours 
    user1 = 20 
    user2 = 30 
    user1 = 3 
    user1 = 4 

現在我通過添加groupBy來重構

public function getUserForThisTask($projectId) 
{ 
    $qb = $this->createQueryBuilder('t') 
     ->select('t.createdby','t.totalhour') 
     ->groupBy('t.createdby') 
     ->where('t.project = :project_id') 
     ->setParameter('project_id', $projectId); 
     return $qb->getQuery() 
       ->getResult(); 
} 

現在,這將是結果,正如你看到的,涉及到USER1一些值不包括

user hours 
user1 = 20 
user2 = 30 

現在,我想這總涉及到每個用戶的所有小時

user hours 
user1 = 27 
user2 = 30 

你將如何做什麼?

+2

我想你需要'SUM(t.totalHour)'在第二個查詢,否則只會選擇第一組,而不是共計起來。 – qooplmao

回答

2

使用您當前的查詢,如@qooplmao所述,您只有每個組的virt totalhour

你需要總結所有這些。所以,你的查詢必須是這樣的:

public function getUserForThisTask($projectId) 
    { 
    $qb = $this->createQueryBuilder('t') 
     ->select('t.createdby','SUM(t.totalhour) AS TOTAL') 
     ->groupBy('t.createdby') 
     ->where('t.project = :project_id') 
     ->setParameter('project_id', $projectId); 
     return $qb->getQuery() 
        ->getResult(); 
    }