【发布时间】:2016-05-31 08:28:05
【问题描述】:
有没有办法可以在 Doctrine 的 QueryBuilder 中使用 min()(或等效项)?
我正在处理的页面显示了当前(或模拟)用户的发票表。他们的每张发票都有一行,并且有任何相关付款的嵌套可折叠行(见下图)
我的问题是,在我的树枝模板中,我需要能够在发票级别识别是否有任何付款未获批准。如果任何付款未获批准,那么我需要标记付款及其相关的发票行。例如,在下面的示例中,“Invoice #1”是黄色的,因为它有一个嵌套的“Payment #2”记录是黄色的(未批准):
为了在发票级别访问此内容,我一直在尝试通过我的 InvoiceRepository 进行此操作,但我不清楚是否/如何使用 QueryBuilder 来完成此操作。我不知何故需要anyToBeApproved(这不是我的发票实体的属性)可用,并且还包括付款信息:
select a.*, min(b.approved) as anyToBeApproved
from Invoice a
left join Payment b
on a.invoice_id=b.id
where a.member_id=$Uid
group by a.id
我的控制器:
$invoices = $em->getRepository('AppBundle:Invoice')->OutstandingForUser($this->getUser()->getId());
我的查询生成器:
public function OutstandingForUser($Uid)
{
return $this->createQueryBuilder('i')
->select('i')
->leftJoin('i.member_id','m')
->leftJoin('i.payment_ids','p')
->andwhere('m.member_id = :MemberId' )
->setParameter('MemberId',$Uid)
->getQuery()
->getResult();
}
【问题讨论】:
标签: doctrine-orm doctrine symfony query-builder