2013-02-22 78 views
2

我使用KNP分頁程序包中的Symfony 2KNP分頁程序只適用於陣列

我不斷收到試圖學說查詢傳遞到分頁程序時出現以下錯誤:

Fatal error: Call to a member function toArray() on a non-object in /var/www/adwind/vendor/knplabs/knp-components/src/Knp/Component/Pager/Event/Subscriber/Paginate/Doctrine/ORM/QuerySubscriber.php on line 67 Call Stack: 0.0000 635448 1. {main}() /var/www/adwind/web/app_dev.php:0 0.0166 6042728 2. Symfony\Component\HttpKernel\Kernel->handle() /var/www/adwind/web/app_dev.php:25 0.2128 10057152 3. Symfony\Bundle\FrameworkBundle\HttpKernel->handle() /var/www/adwind/app/bootstrap.php.cache:617 0.2129 10058808 4. Symfony\Component\HttpKernel\HttpKernel->handle() /var/www/adwind/app/bootstrap.php.cache:1566 0.2129 10058808 5. Symfony\Component\HttpKernel\HttpKernel->handleRaw() /var/www/adwind/app/bootstrap.php.cache:1390 2.1839 21851024 6. call_user_func_array() /var/www/adwind/app/bootstrap.php.cache:1426 2.1840 21851640 7. Adwind\BannerBundle\Controller\BannerController->listAction() /var/www/adwind/app/bootstrap.php.cache:1426 2.2085 22257080 8. Knp\Component\Pager\Paginator->paginate() /var/www/adwind/src/Adwind/BannerBundle/Controller/BannerController.php:76 2.2173 22401584 9. Symfony\Component\HttpKernel\Debug\ContainerAwareTraceableEventDispatcher->dispatch() /var/www/adwind/vendor/knplabs/knp-components/src/Knp/Component/Pager/Paginator.php:97 2.2173 22403912 10. Symfony\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch() /var/www/adwind/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Debug/ContainerAwareTraceableEventDispatcher.php:78 2.2175 22406864 11. Symfony\Component\EventDispatcher\EventDispatcher->dispatch() /var/www/adwind/app/cache/dev/classes.php:5072 2.2176 22410128 12. Symfony\Component\HttpKernel\Debug\ContainerAwareTraceableEventDispatcher->doDispatch() /var/www/adwind/app/cache/dev/classes.php:4854 2.2254 22490968 13. call_user_func() /var/www/adwind/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Debug/ContainerAwareTraceableEventDispatcher.php:139 2.2254 22491024 14. Knp\Component\Pager\Event\Subscriber\Paginate\Doctrine\ORM\QuerySubscriber->items() /var/www/adwind/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Debug/ContainerAwareTraceableEventDispatcher.php:139 

我使用從GitHub的自述文件中的例子:

$em = $this->get('doctrine.orm.entity_manager'); 
$dql = "SELECT a FROM AdwindBannerBundle:Banner a"; 
$query = $em->createQuery($dql); 
$pagination = $this->get('knp_paginator')->paginate($query,$page,10); 

一切正常,如果我通過了結果陣列,而不是查詢本身。 即:

$query = $em->createQuery($dql)->getResult(); 

但據我瞭解,你應該能夠通過查詢本身,甚至是查詢生成器。 另外我想像這樣我得到的所有結果,而不是隻有一個頁面。

PS:我現在用的分頁程序包的DEV-高手版

回答

3

嘗試composer.json使用特殊版本KNP-сomponents

「knplabs/KNP-組件」:「1.2.1」,

我認爲目前的版本有一個bug

至少現在我的作品

+0

嗨,無法測試這一段時間:) ive現在測試它,它確實工作,我可以通過一個QueryBuilder或查詢現在的Paginator。 所以現在可以看到結果。 然而,似乎knp_pagination_render枝功能現在不工作,所以我不能看到任何分頁按鈕....再次這與數組,但與查詢建造者或查詢不起作用... 我試圖恢復knplabs/knp- paginator-bundle到2.3.2而不是dev-master,但沒有運氣... 無論如何,我想我只是不會使用knp paginator,直到下一個版本:) thx的幫助! – Aaike 2013-03-02 06:42:26

1

這個工作對我來說:

$em = $this->getDoctrine()->getEntityManager(); 
$query = $em->createQueryBuilder(); 

$query->select(array('b')) 
     ->from('MyMainBundle:Customer', 'b') 
     ->orderBy('b.updated_at', 'desc'); 

$paginator = $this->get('knp_paginator'); 
$requests = $paginator->paginate($query, 
           $this->get('request')->query->get('page', 1), 5); 

目前分頁程序可以分頁:

  • 陣列
  • 主義\ ORM \ Query
  • Doctrine \ ORM \ QueryBuilder
  • 主義\ ODM \ MongoDB的\查詢\查詢
  • 主義\ ODM \ MongoDB的\查詢\生成器
  • 主義\ COMMON \收藏\ ArrayCollection的 - 任何道理關係 收集包括
  • ModelCriteria - 推進ORM查詢
  • 陣列Solarium_Client和Solarium_Query_Select作爲元素
+0

太奇怪了......我想你代碼,傳遞一個查詢生成器而不是查詢,我一直得到相同的錯誤,只要做一個getResult()錯誤消失... 必須是我的安裝有問題.. 感謝您嘗試反正;) – Aaike 2013-02-22 08:29:02

相關問題