我希望获得与用户相关的每笔金额的总和
这是我的原始代码
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
你会怎么做?
答案 0 :(得分: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();
}