我是Doctrine的新手,在使用Criteria
限制(通过setMaxResults
功能)时,我找不到获得总结果数的方法在EntityRepository::matching
方法中。
在我的存储库(不是EntityRepository的extend
)中,我正在使用以下内容(我知道这不是最佳代码,它仅用于学习Doctrine):
public function getAll($query = null) {
if ($query instanceof Criteria) {
$users = $this->em->getRepository('App\Entities\User')->matching($query)->toArray();
} else {
$users = $this->em->getRepository('App\Entities\User')->findAll();
}
return $users;
}
现在让我们说Criteria定义如下:
$query = Criteria::create();
$query->where(Criteria::expr()->contains('username', 'ron'));
$query->setMaxResults(10);
实际上有超过10个用户匹配它。
如何获得符合条件的用户总数?
答案 0 :(得分:0)
如果将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);