2013-06-24 4 views
0

Я устанавливаю paginator knp, мой композитор настроен на «knplabs/knp-paginator-bundle»: «2.3. *», Однако он не работает для объекта Query.Knp Paginator не работает с Query

Вот мой запрос:

public function getCommentariesByUser(User $user) { 
     $qb = $this->createQueryBuilder('c'); 
     $qb->innerJoin('c.item', 'i'); 

     $qb->andWhere($qb->expr()->eq('i.user', ':user')) 
       ->setParameter(':user', $user); 

     $qb->andWhere($qb->expr()->neq('c.user', ':user1')) 
       ->setParameter(':user1', $user); 

     return $qb->getQuery(); 
} 

Как я зову его в своем действии:

public function commentariesAction($page) { 
    $user = $this->getUser(); 
    $commentaryRepository = $this->getDoctrine()->getRepository('My\MyBundle\Entity\Commentary'); 
    $query = $commentaryRepository->getCommentariesByUser($user); 

    $paginator = $this->get('knp_paginator'); 
    $pagination = $paginator->paginate(
     $query, 
     $page/*page number*/, 
     15/*limit per page*/ 
    ); 

    return array('pagination' => $pagination); 
} 

Он просто не показывает результаты, однако если я ставлю $ query-> выполнить () Оно работает. Что не так?

+0

Вы возвращаетесь $ пагинации для целей тестирования? Я новичок в KnpPaginatorBundle, но перехожу к нему с помощью: 'return $ this-> render ('MyBundle :: myTemplate.html.twig', array ('pagination' => $ pagination)); ' Затем вы используете что-то вроде' {% для элемента в pagination%} 'для доступа к элементам. – caponica

+0

Кроме того, он работает, если вы используете QueryBuilder вместо Query? то есть 'return $ qb' вместо' return $ qb-> getQuery() 'из' getCommentariesByUser() ' – caponica

ответ

0

В настоящее время это можно использовать следующую комбинацию Paginator пакетов для кода выше работы:

"knplabs/knp-components": "1.2.1", 
"knplabs/knp-paginator-bundle": "~2.3"