Php 原则2-通过存储库使用限制时获取总计

Php 原则2-通过存储库使用限制时获取总计,php,doctrine-orm,doctrine,limit,Php,Doctrine Orm,Doctrine,Limit,我不熟悉该理论,在EntityRepository::matching方法中使用带标准的limit(通过setMaxResults函数)时,我就是找不到一种方法来获得结果的总数 在我的存储库中(不是EntityRepository的扩展),我使用了以下代码(我知道这不是最佳代码,它只是用来学习教义): 现在让我们假设标准的定义如下: $query = Criteria::create(); $query->where(Criteria::expr()->contains('usern

我不熟悉该理论,在
EntityRepository::matching
方法中使用带
标准的limit
(通过
setMaxResults
函数)时,我就是找不到一种方法来获得结果的总数

在我的存储库中(不是EntityRepository的
扩展
),我使用了以下代码(我知道这不是最佳代码,它只是用来学习教义):

现在让我们假设标准的定义如下:

$query = Criteria::create();
$query->where(Criteria::expr()->contains('username', 'ron'));
$query->setMaxResults(10);
事实上,有超过10个用户与之匹配


如何获取符合条件的用户总数?

如果将
maxResults
设置为10,则得到10个结果;)

为什么不调用
getAll()
以获取所有结果,然后应用
MaxResults

//search for Ron's
$query = Criteria::create();
$query->where(Criteria::expr()->contains('username', 'ron'));

//check how many Ron's your database can find
$count = $repo->getAll($query)->count();

//get the first 10 records
$query->setMaxResults(10);
$users = $repo->getAll($query);

我曾尝试在单个查询中执行此操作,但我猜COUNT(*)作为第一个查询(没有限制)的原则足够快,不会产生很大的“开销”影响。谢谢:)
//search for Ron's
$query = Criteria::create();
$query->where(Criteria::expr()->contains('username', 'ron'));

//check how many Ron's your database can find
$count = $repo->getAll($query)->count();

//get the first 10 records
$query->setMaxResults(10);
$users = $repo->getAll($query);