我的Symfony2 Repository Class中有以下代码......
$query = $this->createQueryBuilder('foo')
->where('foo.bar = :id')
->setParameter('id', $myID)
->getQuery();
如何获取数据库找到的行数?
提前致谢
答案 0 :(得分:42)
你需要执行DQL来做你想做的事。
$query = $this->createQueryBuilder()
->from('foo', 'f')
->where('foo.bar = :id')
->setParameter('id', $myID)
->getQuery();
$total = $query->select('COUNT(f)')
->getQuery()
->getSingleScalarResult();
答案 1 :(得分:31)
我认为你可以这样做:
$query = $this->createQueryBuilder()
->select('COUNT(f.id)')
->from('foo', 'f')
->where('foo.bar = :id')
->setParameter('id', $myID)
->getQuery();
$total = $query->getSingleScalarResult();
答案 2 :(得分:19)
您执行查询然后获取结果。获得结果后,您可以通过对结果执行count
来获取记录数:
$results = $query->getResult();
$resultCount = count($results);
如果您关注分页,就像从总数中获取25条记录一样。然后,你有两个选择。
您执行两次查询,一次获得总结果,另一次使用方法setFirstResult
和setMaxResults
检索25个结果。此方法setFirstResult
使您可以设置偏移量和第二个setMaxResults
个记录数。以下代码将为您提供25到50之间的结果,如果您按页面使用25条记录,则为第二页。
$query->setFirstResult(25);
$query->setMaxResults(25);
您可以检查具有分页器支持的Doctrine2的doctrine扩展。这些扩展是由Doctrine2的开发人员之一完成的。您可以查看这些here。
希望得到这个帮助。
的问候,
马特
答案 3 :(得分:7)
我认为这很简洁:
$qb = $repo->createQueryBuilder('entity');
$qb->select('COUNT(entity)');
$count = $qb->getQuery()->getSingleScalarResult();
$repo
的类型为Doctrine\ORM\EntityRepository