2016-03-03 31 views
0

我有一個平常的QueryBuilder:主義,setMaxResults,並得到說好的被賦予相同setMaxResults結果的數量

$this->createQueryBuilder('x')->select()->setMaxResults(10); 

但實際上我需要的記錄總數過。它是一個paginator事物順便說一句。如何優雅地做到這一點?我是否也應該運行第二個COUNT查詢?

+2

不幸的是,是的,你需要兩個查詢 –

+2

或者你可以使用[主義的分頁程序(http://doctrine-orm.readthedocs.org/projects/doctrine-orm/en/latest/tutorials/pagination.html )你可以在哪裏訪問 – craigh

回答

1

學說船舶pagination tool。你最好使用它。是的,它執行2或3個查詢(取決於標誌$fetchJoinCollection)。

use Doctrine\ORM\Tools\Pagination\Paginator; 

$query = $this->createQueryBuilder('x') 
    ->select() 
    ->setFirstResult(0) 
    ->setMaxResults(10) 
    ->getQuery(); 

$paginator = new Paginator($query, $fetchJoinCollection = false); 

$totalRecords = $paginator->count(); 

foreach ($paginator as $entry) { 
    $entry->getId(); 
} 
相關問題