学说2 - 通过存储库使用限制时获取总数

时间:2016-05-04 14:46:15

标签: php doctrine-orm doctrine limit

我是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个用户匹配它。

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

1 个答案:

答案 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);