CakePHP: как получить общее количество записей, полученных с помощью разбивки на страницы
Когда вы извлекаете записи, используя $this->paginate('Modelname')
с некоторой страницей limit
, как вы получаете общее количество извлеченных записей?
Я хотел бы отобразить этот общий счет в представлении, но count($recordsRetrieved)
возвращает номер, отображаемый только на текущей странице. Итак, если общее количество найденных записей равно 99, а limit
- 10, оно возвращает 10, а не 99.
Ответы
Ответ 1
Вы можете 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'];
Ответ 2
Чтобы получить ответ, перейдите по ссылке
http://book.cakephp.org/2.0/en/controllers/request-response.html
use pr($this->request->params)
вы найдете все материалы разбивки на страницы
Ответ 3
Вот как я получил счетчик от моего контроллера *
Это для 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'];
* Я знаю, что ФП спрашивает об этом, но я думаю, что если Арзон Баруа ответят, это помогает людям (хотя я думаю, что он говорит только о запрошенном счете, а не о фактическом подсчете, как хочет OP), тогда это может помочь тоже.
Ответ 4
Этот способ получает информацию о pagination над контроллером.
class YourController extends Controller{
$helpers = array('Paginator');
public fn(){
$view = new View(null);
var_dump($view->paginator->params());
}
}