Mat*_*att 31 php symfony doctrine-orm
我的Symfony2存储库类中有以下代码...
$query = $this->createQueryBuilder('foo')
->where('foo.bar = :id')
->setParameter('id', $myID)
->getQuery();
Run Code Online (Sandbox Code Playgroud)
如何获取数据库找到的行数?
提前致谢
Reu*_*ven 42
您需要执行DQL来执行您想要的操作.
$query = $this->createQueryBuilder()
->from('foo', 'f')
->where('foo.bar = :id')
->setParameter('id', $myID)
->getQuery();
$total = $query->select('COUNT(f)')
->getQuery()
->getSingleScalarResult();
Run Code Online (Sandbox Code Playgroud)
小智 33
我想你可以这样做:
$query = $this->createQueryBuilder()
->select('COUNT(f.id)')
->from('foo', 'f')
->where('foo.bar = :id')
->setParameter('id', $myID)
->getQuery();
$total = $query->getSingleScalarResult();
Run Code Online (Sandbox Code Playgroud)
Mat*_*att 19
您执行查询然后获取结果.获得结果后,您可以通过count
对结果执行以下操作来获取记录数:
$results = $query->getResult();
$resultCount = count($results);
Run Code Online (Sandbox Code Playgroud)
如果您关心分页,就像从总数中获取25条记录一样.然后,你有两个选择.
您执行查询两次,一次获得总成绩,其他时间只检索25使用该方法的结果setFirstResult
和setMaxResults
.此方法setFirstResult
使您可以设置偏移量和第二个setMaxResults
记录数.以下代码将为您提供25到50之间的结果,如果您按页面使用25条记录,则它是第二页.
$query->setFirstResult(25);
$query->setMaxResults(25);
您可以检查具有分页器支持的Doctrine2的doctrine扩展.这些扩展是由Doctrine2的开发人员之一完成的.你可以在这里查看这些.
希望这有帮助.
问候,
马特
我认为这是简洁的:
$qb = $repo->createQueryBuilder('entity');
$qb->select('COUNT(entity)');
$count = $qb->getQuery()->getSingleScalarResult();
Run Code Online (Sandbox Code Playgroud)
哪种$repo
类型Doctrine\ORM\EntityRepository
归档时间: |
|
查看次数: |
59634 次 |
最近记录: |