2013-02-25 52 views
7

का उपयोग करके अंकन मैं ZF2 और सिद्धांत का उपयोग करके अंकन को लागू करने की कोशिश कर रहा हूं।सिद्धांत और जेडएफ 2

मैं यहां क्या करने की कोशिश कर रहा हूं एक संबंधित तालिका से डेटा लाने के लिए 'xyz' कहें।

जहां मेरी श्रेणियां तालिका अपने स्वयं के पीके पर कई आत्म संदर्भों में से एक कर रही है। मेरी catgories टेबल feilds

  • आईडी निम्नलिखित है (पी)
  • created_at
  • category_id (स्वयं संदर्भित पी)

मेरे XYZ तालिका कहते हैं कि यह नाम तालिका कहा जाता

है की सुविधा देता है
  • आईडी (पीके)
  • Category_आईडी (एफके)
  • नाम
  • विस्तार

यह क्या मैं डेटा

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

और मेरे नियंत्रक में लाने के लिए यह मैं क्या कर रहा हूँ है क्या करने के लिए कोशिश कर रहा हूँ है

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

मुझे पेजिंग के साथ परिणाम नहीं मिल रहे हैं, क्या मुझे कुछ याद आ रहा है कि मुझे क्या याद आ रहा है?

उत्तर

7

आप वहां गलत पेजिनेटर का उपयोग कर रहे हैं। इसके बजाय, आप DoctrineORMModule द्वारा उपयोग कर सकते हैं (DoctrineORMModule\Paginator\Adapter\DoctrinePaginator देखें)।

यह बहुत स्पष्ट नहीं हो सकता है, लेकिन तर्क क्या आप पहले से ही लिखा था के समान है:

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

मैं सिर्फ $ एडाप्टर = नए DoctrineAdapter (नई ORMPaginator ($ categoryModel-> allSubcategories ($ करने के लिए इसे संशोधित श्रेणी_आईडी, $ कॉलम, $ ऑर्डर), सच)); $ पेजिनेटर = नया पेजिनेटर ($ एडाप्टर); –

+0

और सार्वजनिक फ़ंक्शन सभी सबस्क्रेशंस ($ आईडी, $ कॉलम, $ ऑर्डर) { $ रिपॉजिटरी = $ this-> इकाई प्रबंधक-> getRepository ('श्रेणी \ Entity \ Category'); $ queryBuilder = $ भंडार-> createQuerybuilder ('श्रेणी'); $ querybuilder-> चुनें ('श्रेणी'); $ querybuilder-> शामिल हों ('श्रेणी \ Entity \ Categoryनाम', 'श्रेणी_नाम', 'साथ', 'category.id = category_name.category'); $ querybuilder-> orderBy ("category.status"); $ q = $ querybuilder-> getDql(); $ query = $ this-> इकाई प्रबंधक-> createQuery ($ q); $ परिणाम = $ क्वेरी-> getResult(); $ परिणाम लौटाएं; } –

+0

अब मुझे यह त्रुटि मिल रही है तर्क 1 को पास किया गया है \\ ORM \\ उपकरण \\ पेजिनेशन \\ Paginator :: cloneQuery() सिद्धांत का एक उदाहरण होना चाहिए \\ ORM \\ क्वेरी, सरणी को कैसे दूर किया जाए यह –

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^