2013-02-25 14 views
7

kullanarak Pagination kullanarak ZF2 ve Doctrine kullanarak Pagination uygulamasını deniyorum.Doctrine ve ZF2

Burada yapmaya çalıştığım, ilişkili bir tablodan veri almaktır 'xyz' diyelim.

Kategorilerim tablolarımda kendi PK'ları üzerinde çok sayıda kendi kendini referans alarak yapıyor. MY catgories tablolar feilds

  • kimliği

    aşağıdaki etmiştir (PK)
  • created_at
  • category_id (öz referans PK)

My XYZ tablo o ismi masa denilen

sahiptir sağlar ki
    • Kimlik (PK)
    • Category_id (FK)
    • adı
    • Detay

    Bu ben bu i ne yapıyorum verileri

     public function allSubcategories($id, $column, $order) { 
    $repository = $this->entityManager->getRepository('Category\Entity\Category'); 
        $queryBuilder = $repository->createQueryBuilder('category'); 
        $queryBuilder->distinct(); 
        $queryBuilder->select('category'); 
    
        $queryBuilder->join('Category\Entity\CategoryName', 'category_name', 'WITH', 'category.id = category_name.category'); 
        $queryBuilder->orderBy("category.status"); 
        $q = $queryBuilder->getDql(); 
        return $query = $this->entityManager->createQuery($q); 
    } 
    

    Ve benim denetleyicisi getirmesi yapmaya çalışıyorum budur Şimdi

     public function subcategoryAction() { 
    
        ///////////////////////////InPut Params Given for the pagination 
        $category_id = (int) $this->params()->fromRoute('id', 0); 
        $page = (int) $this->params()->fromRoute('page', 0); 
        $column = $this->params()->fromQuery('column'); 
        $order = $this->params()->fromQuery('order'); 
    
    
    
        $categoryModel = $this->getServiceLocator()->get('Category'); 
        $categoryModel->category = $category_id; 
    
    
        $perPage = 10; 
        $request = $this->getRequest(); 
        if ($request->isGet()) { 
         $view = new ViewModel(); 
         $query = $categoryModel->allSubcategories($category_id, $column, $order); 
    
         $paginator = new ORMPaginator($query); 
    
         $paginator = new \Zend\Paginator\Paginator(new 
             \Zend\Paginator\Adapter\ArrayAdapter(array($paginator))); 
         $paginator->setCurrentPageNumber($page); 
         $paginator->setItemCountPerPage(2); 
    
        } 
    
        return array('id' => $category_id, 'view' => $paginator); 
    } 
    

    uygulanan pagination ile sonuç alamıyorum bazı eksikler hakkında bana rehberlik edebilirsiniz 1?

  • cevap

    7

    Yanlış yönlendiriciyi burada kullanıyorsunuz. Bunun yerine, birini DoctrineORMModule'dan kullanabilirsiniz (bkz. DoctrineORMModule\Paginator\Adapter\DoctrinePaginator).

    Çok açık olmayabilir, ama mantık zaten yazdıklarını benzer: ben sadece $ adaptörü = new DoctrineAdapter (yeni ORMPaginator ($ categoryModel-> allSubcategories ($ bunu modifiye

    use DoctrineORMModule\Paginator\Adapter\DoctrinePaginator as PaginatorAdapter; 
    use Doctrine\ORM\Tools\Pagination\Paginator as ORMPaginator; 
    use Zend\Paginator\Paginator as ZendPaginator; 
    
    $query = $categoryModel->allSubcategories($category_id, $column, $order); 
    
    $paginator = new ZendPaginator(new PaginatorAdapter(new ORMPaginator($query))); 
    
    +0

    category_id, $ column, $ order), true)); $ paginator = yeni Paginator ($ adaptör); –

    +0

    ve public işlevi allSubcategories ($ id, $ sütun, $ sipariş) { $ repository = $ this-> entityManager-> getRepository ('Category \ Entity \ Category'); $ queryBuilder = $ repository-> createQueryBuilder ('category'); $ queryBuilder-> select ('category'); $ queryBuilder-> join ('Category \ Entity \ CategoryName', 'category_name', 'WITH', 'category.id = category_name.category'); $ queryBuilder-> orderBy ("category.status"); $ q = $ queryBuilder-> getDql(); $ query = $ this-> entityManager-> createQuery ($ q); $ results = $ query-> getResult(); , $ sonuç döndürür; } –

    +0

    Şimdi bu hatayı alıyorum Argüman 1 Doctrine \\ ORM \\ Tools \\ Pagination \\ Paginator :: cloneQuery() 'ye aktarılmış bir Doctrine \\ ORM \\ Sorgusu örneği olmalıdır, dizi verilen nasıl üstesinden gelinebilir Bu –