Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用规则分页器获取计数以外的其他聚合值_Php_Doctrine Orm_Aggregate_Paginator - Fatal编程技术网

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
中获取聚合值