2014-10-04 65 views
5

我的問題,是高棉民族分頁程序僅是這樣的:KNP分頁程序使用的findAll()方法

$em = $this->get('doctrine.orm.entity_manager'); 
    $dql = "SELECT a FROM MainArtBundle:Art a"; 
    $query = $em->createQuery($dql); 


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

但不能以這種方式:

$em   = $this->getDoctrine()->getManager(); 
    $entities = $em->getRepository('MainArtBundle:Art')->findAll(); 

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

爲什麼會這樣呢?我不明白。

Here's我的樹枝電話:

<li>{{ knp_pagination_sortable(paginator, 'Oldest', 'a.id', {'direction': 'desc'}) }}</li> 

問候邁克爾

+0

IM漂亮多了。我不能直接分類我的實體,而不建立某種新的查詢。我的意思是我已經有我的查詢和實體用法我喜歡它,我只是想爲它添加分頁,並且文檔只顯示如何做到這一點..作爲你的問題演示..奇怪的是在我的情況它的涓涓細流到這個錯誤,這是非常錯誤的領導..我想把它添加到這個主題的搜索能力'嘗試調用類「Symfony \組件\ HttpFoundation \ JsonResponse」方法「getTemplate」。 (500內部服務器錯誤)' – blamb 2015-05-27 21:32:24

+0

'in vendor/knplabs/knp-paginator-bundle/Twig/Extension/PaginationExtension.php at line 56''$ template?:$ pagination-> getTemplate(),' – blamb 2015-05-27 21:36:46

回答

4

KNP不支持排列數組元素,如here所述。

在數據庫級別更好地提取和排序數據。在第二個示例中,您從表格中提取所有數據(並且可以更大),然後向分銷商請求限制它們。這表現不佳。因此,最好用查詢來完成這項工作,並讓它管理paginator元素。

目前KNP分頁程序可以分頁:

  • array
  • Doctrine\ORM\Query
  • Doctrine\ORM\QueryBuilder
  • Doctrine\ODM\MongoDB\Query\Query
  • Doctrine\ODM\MongoDB\Query\Builder
  • Doctrine\Common\Collection\ArrayCollection - 任何道理關係集合,包括 ModelCriteria - 的Propel ORM查詢
  • 陣列Solarium_ClientSolarium_Query_Select作爲元素

doc fererence查看詳細

我的兩分錢

+0

也可以分頁簡單的字符串嗎? – Slowwie 2014-10-06 14:12:25

+0

我添加關於您可以分頁的文檔參考。如果你有一個字符串數組,你可以分頁。你能提供更多關於你的問題的信息嗎? – Matteo 2014-10-06 14:20:41

+0

另外它不可能簡單地分頁長字符串,就像一本書?關於Ajax的是什麼?具有教義查詢調用的ajax分頁網站最簡單的工作流程是如何?我不想有一個完整的教程,只有如何處理......謝謝。 – Slowwie 2014-10-06 14:28:39

3

的FindAll返回數組。 knp paginator需要一個原則查詢對象。

+0

也是不可能用簡單的findAll()方法做到這一點? – Slowwie 2014-10-04 20:58:04

+1

簡短的回答是,你不能。您需要製作自己的存儲庫方法。 – 2014-10-04 21:31:25

+0

當前paginator可以分類各種類型,詳情請參閱[doc fererence](https://github.com/KnpLabs/KnpPaginatorBundle#controller) – Matteo 2014-10-05 11:34:04

6

findAll()與Knp_paginator兼容,你就必須給它您的主頁:

$query = $em->getRepository('Acme\FOOBundle\Entity\BAR')->findAll(); 
 
$paginator = $this->get('knp_paginator'); 
 
requests = $paginator->paginate(
 
    $query, 
 
    $this->get('request')->query->get('page', 1), 
 
    5 
 
);

0

你可以試試這個:有同樣的問題

$query = $repository->createQueryBuilder('a'); 
相關問題