Php 使用规则分页器获取计数以外的其他聚合值
假设我有一个Php 使用规则分页器获取计数以外的其他聚合值,php,doctrine-orm,aggregate,paginator,Php,Doctrine Orm,Aggregate,Paginator,假设我有一个发票实体,它有两个字段映射到条令:代码(发票编号,如'INV20180427')和总额(发票总额,如19.99) 我有很多发票,所以我用Doctrine的Paginator来显示它们。我创建了查询生成器和分页器,然后: 我使用count($paginator)获得结果总数 我迭代分页器,以获得当前页面的结果 我的问题是,我还希望得到与我的查询相对应的所有发票的总数,而不仅仅是发票的数量 有没有办法扩展Paginator来实现这一点?我想我现在可以回答我自己的问题了,所以我想尝试一
发票
实体,它有两个字段映射到条令:代码
(发票编号,如'INV20180427'
)和总额
(发票总额,如19.99
)
我有很多发票,所以我用Doctrine的Paginator来显示它们。我创建了查询生成器和分页器,然后:
- 我使用
获得结果总数count($paginator)
- 我迭代
,以获得当前页面的结果分页器
有没有办法扩展Paginator来实现这一点?我想我现在可以回答我自己的问题了,所以我想尝试一下。 要构建
Paginator
,我使用QueryBuilder
,因此我应该使用此查询生成器来获取聚合值:
$queryBuilder = $em->createQueryBuilder()
->from(Invoice::class, 'i')
->select('o');
$paginator = new Paginator($queryBuilder->getQuery());
$total = $queryBuilder->select('SUM(i.total)')->getQuery()->getSingleScalarResult();
问题仍然是,如果我只能访问Paginator
,我无法获得所需的聚合值,因为Paginator
不知道QueryBuilder
,而只知道查询
因此,可以创建一个CustomPaginator
类,该类将采用QueryBuilder
而不是Query
,并有一个方法从该QueryBuilder
中获取聚合值