2013-06-24 25 views
0

我正在建立knp paginator,我的作曲家设置为“knplabs/knp-paginator-bundle”:“2.3。*”但是它不适用于Query对象。Knp Paginator不适用于查询

这里是我的查询:

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); 
} 

它根本不显示的结果,但是如果我把$查询 - >执行( ) 有用。怎么了?

+0

你是出于测试目的返回$分页?我是KnpPaginatorBundle的新手,但我将其传递给视图: 'return $ this-> render('MyBundle :: myTemplate.html.twig',array('pagination'=> $ pagination)); ' 然后,您可以使用类似于“{%for item in pagination%}”的内容来访问这些项目。 – caponica

+0

另外,如果使用QueryBuilder而不是Query,它是否工作?即'return $ qb'而不是'getCommentariesByUser()'返回$ qb-> getQuery()'' – caponica

回答

0

这是目前可以使用分页程序包的下一个组合上面的代码工作:

"knplabs/knp-components": "1.2.1", 
"knplabs/knp-paginator-bundle": "~2.3" 
相关问题