Как ограничить paginate в CakePHP - PullRequest
9 голосов
/ 27 мая 2011

Как ограничить paginate в cakephp?

Предположим, у меня 400 записей.
Мне нужно получить только 25 записей от 50-й до 75-й записи и нужно отображать 5 записей на странице.
Как я могу сделать это в paginate?

Пример кода:

        $this->paginate = array(
                'contain'=>array('User'),
                'recursive' => 2,
                'order' => array('Profile.winning' => 'DESC'),
                'limit' =>5

            );

Ответы [ 4 ]

10 голосов
/ 27 мая 2011

Вы можете установить условия для нумерации страниц.

function listRecords()
  {
  $this->paginate = array(
    'conditions' => array('Model.id >=' => 50, 'Model.id <=' => 75),
    'limit' => 5
    );
  $this->paginate('Model');
  );

EDIT:

Решение от здесь :

$this->paginate = array(
  'limit' => 20,
  'totallimit' => 1000
  );

А потом в модели:

public function paginateCount($conditions = null, $recursive = 0, $extra = array())
  {
  if( isset($extra['totallimit']) ) return $extra['totallimit'];
  }
2 голосов
/ 05 апреля 2012

Улучшенная версия со ссылкой: http://www.mainelydesign.com/blog/view/best-paginatecount-cakephp-with-group-by-support

Это возвращает правильную базу общего количества, в зависимости от того, что меньше.

1 голос
/ 28 апреля 2013

Используйте maxLimit в CakePHP v2.x.

public $paginate = array(
    // other keys here.
    'maxLimit' => 10
);

Подробнее об этом здесь .

0 голосов
/ 25 ноября 2017
$query = $this->User->find('all', [
    'recursive' => 2,
    'order' => array('Profile.winning' => 'DESC'),
    'limit' => 25, 
    'offset' => 50
]);
$this->paginate = array(
    $query,
    'limit' => 5
);
...