2013-04-09 9 views
17

अभी मैं कहूंगा कि मैंने यह प्रश्न Doctrine2 Paginator पढ़ा है, लेकिन यह मुझे मेरे प्रश्न के शीर्षक के बारे में पर्याप्त जानकारी नहीं देता है।Doctrine2 Paginator कुल परिणाम प्राप्त कर रहे हैं

जब मैं Doctrine1 इस्तेमाल किया मैं उदाहरण के लिए इस तरह के कोड के साथ परिणाम हो रही थी:

$list = $this->query 
    ->addSelect('SQL_CALC_FOUND_ROWS *') 
    ->offset(($this->currentPage - 1) * $this->perPage) 
    ->limit($this->perPage) 
    ->execute(array(), \Doctrine_Core::HYDRATE_ARRAY_SHALLOW); 

$totalRecords  = SqlCalcFoundRowsEventListener::getFoundRowsCount(); 
$this->totalPages = ceil($totalRecords/$this->perPage); 

और यह बहुत अच्छा था।

अब, Doctrine2 का उपयोग करते समय मैं उलझन में हूं कि मुझे वर्तमान पृष्ठ के सीमित परिणाम के रूप में एक ही क्वेरी के साथ रिकॉर्ड की कुल राशि कैसे प्राप्त करनी चाहिए।

किसी भी मदद/सलाह की सराहना की जाएगी।

+1

अंत में कल का जवाब होगा - अभी https पर paginator के लिए परीक्षण की जाँच करें: // GitHub। कॉम/सिद्धांत/सिद्धांत/ब्लॉब/मास्टर/परीक्षण/सिद्धांत/टेस्ट/ओआरएम/कार्यात्मक/पेजिनेशनटेस्ट.एफ़पी – Ocramius

+0

परीक्षणों को देखते हुए, लेकिन कोई परीक्षण नहीं है, जो इसे पेजिनेटर को पास करने से पहले क्वेरी को सीमित करता है। शायद मैंने कुछ गलत समझा। – Eugene

उत्तर

38

paginator उपयोग निम्न प्रकार है:

$paginator = new \Doctrine\ORM\Tools\Pagination\Paginator($query); 

$totalItems = count($paginator); 
$pagesCount = ceil($totalItems/$pageSize); 

// now get one page's items: 
$paginator 
    ->getQuery() 
    ->setFirstResult($pageSize * ($currentPage-1)) // set the offset 
    ->setMaxResults($pageSize); // set the limit 

foreach ($paginator as $pageItem) { 
    echo "<li>" . $pageItem->getName() . "</li>"; 
} 
+6

बीटीडब्ल्यू, आपको सीमा और ऑफसेट सेट करने से पहले '$ paginator' गिनती()' की आवश्यकता नहीं है। आप अपने पेजिनेटर को शुरू करने से पहले सीमा और ऑफसेट सेट कर सकते हैं और यह अभी भी अपेक्षित काम करेगा। –

+1

'गिनती() 'के साथ उदाहरण यह दिखाने के लिए है कि यह एक' गणना योग्य ' – Ocramius

+2

है, मुझे उस क्लास पेजिनेटर की उपयोगिता दिखाई नहीं दे रही है, कुछ भी नहीं जोड़ रहा है, मैं डिफ़ॉल्ट ऑब्जेक्ट परिणाम –

0

या कुछ अन्य पाश:

for ($i=0; $i < $pagesCount; $i++) { 
     if ($currentPage == ($i+1)) { 
      $pagination1 .= '<li class="active"><a href="'.\URL::current().'?pagina='.($i+1).'" title="">'.($i+1).'</a></li>'; 
     }else{ 
      $pagination1 .= '<li><a href="'.\URL::current().'?pagina='.($i+1).'">'.($i+1).'</a></li>'; 
     } 
    } 
+0

स्टैक ओवरफ्लो में आपका स्वागत है और उत्तर देने के लिए समय निकालने के लिए धन्यवाद! एक उत्तर में न केवल कोड का एक ब्लॉक होना चाहिए, कृपया अपने समाधान का वर्णन करने वाले कुछ और वर्णनात्मक पाठ भी जोड़ें। –

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