我想从表中获取所有行的数量,以便计算将有多少页面。但问题是该表有大约1000行,每次当我试图找到它们有多少时,计算机速度变慢并需要重新启动。
我只需要行数而不需要别的。我试过这个:
public function countRows()
{
$q = $this->createQueryBuilder('q');
$q->select('q.username');
return $q->getQuery()->getSingleScalarResult();
}
但似乎很慢。
有更好更快的方法来计算行数吗?或者也许是另一种分页方式,但是如何知道会有多少页?
答案 0 :(得分:1)
如果你多次计算COUNT,将方法countRows()的结果保存在这个对象的属性中并返回它:
public function countRows()
{
if ($this->countRowsQ === null)
{
$q = $this->createQueryBuilder('q');
$q->select('COUNT(q.username)');
$this->countRowsQ = $q->getQuery()->getSingleScalarResult();
}
return $this->countRowsQ;
}
答案 1 :(得分:0)
试试这个:
public function countRows()
{
$q = $this->createQueryBuilder('q');
$q->select('COUNT(q.username)');
return $q->getQuery()->getSingleScalarResult();
}
您的查询不计算,但选择所有行,这可能会非常慢。