2013-06-13 2 views
11

Когда вы извлекаете записи с использованием $this->paginate('Modelname') с некоторой страницей limit, как вы можете получить общее количество записей?CakePHP: как получить общее количество записей, извлеченных с разбивкой по страницам

Я бы хотел отобразить этот общий счет на вид, но count($recordsRetrieved) возвращает номер, отображаемый только на текущей странице. Так, если общее количество найденных записей составляет 99 и limit установлен на 10, он возвращает 10, а не 99.

ответ

17

Вы можете debug($this->Paginator->params());

Это даст вам

/* 
Array 
(
    [page] => 2 
    [current] => 2 
    [count] => 43 
    [prevPage] => 1 
    [nextPage] => 3 
    [pageCount] => 3 
    [order] => 
    [limit] => 20 
    [options] => Array 
     (
      [page] => 2 
      [conditions] => Array 
       (
       ) 
     ) 
    [paramType] => named 
) 
*/ 

Окончательный код для PHP> = 5,4:

$this->Paginator->params()['count'];

для PHP версии меньше, чем 5.4:

$paginatorInformation = $this->Paginator->params(); 
$totalPageCount = $paginatorInformation['count']; 
0

Вот как я получил счет от моего контроллера *

Этого для CakePHP 2.3. Он использует помощник вида, который обычно является не-no в контроллере, поскольку он нарушает MVC, но в этом случае я считаю целесообразным сохранить код DRY.

// Top of file 
App::uses('PaginatorHelper', 'View/Helper'); 

// Later in controller method 
$paginatorHelper = new PaginatorHelper(new View(null)); 
$records = $this->paginate(); 
$count = $paginatorHelper->params()['count']; 

* Я знаю, что ОП спросил о с точки зрения, но я думаю, если ответ Arzon Баруа является помощью людям (хотя я думаю, что это только говорит Вам запрашиваемое количество, а не фактическое количество как OP хочет), то это тоже может помочь.

0

Этот способ получает информацию разбиения по страницам на контроллер.

class YourController extends Controller{ 
    $helpers = array('Paginator'); 
    public fn(){ 
    $view = new View(null); 
    var_dump($view->paginator->params()); 
    } 
} 
Смежные вопросы