2016-02-03 46 views
0
$countQuery = $qb->select('q.id,d.name,d.numbers') 
      ->from('Application\Entity\quests', 'q'); 
      ->leftJoin('q.dots', 'd'); 
$query1 = $countQuery->getQuery()->getResult(); 

现在返回的查询我怎么才能返回结果的总数 **i don't want to write 2 queries** BCZ会增加执行时间比 我曾尝试总计数排在教义2 ZF2

$countQuery = $qb->select('count(q.id) as total_results,d.name,d.numbers') 
      ->from('Application\Entity\quests', 'q'); 
      ->leftJoin('q.dots', 'd'); 
$query1 = $countQuery->getQuery()->getResult(); 

但其不工作

回答

1

getResult()方法返回结果的数组。要计算getResult()方法返回的总体结果,只需使用PHP函数count对其进行计算。

$countQuery = $qb 
    ->select('q.id,d.name,d.numbers) 
    ->from('Application\Entity\quests', 'q') 
    ->leftJoin('q.dots', 'd'); 

$query1 = $countQuery->getQuery()->getResult(); 

$totalResults = count($query1); 

如果您想分页查询,那么在计算总行数的情况下,您需要执行两个查询。一个用于分页结果,另一个用于统计数据库中的所有行。

+0

它返回* [“count_id”] =>字符串(1)“1”*与每个数组,但我希望它返回的结果总数 –

+0

如果我返回100行,它应该说100行 –

+0

也'getResult()'返回一个数组,以便您可以简单地调用'count($ query1);'获得返回结果的数量而不是添加'count query' – Vardius