如何限制cakephp中的分页

发布于 2024-11-10 16:06:56 字数 381 浏览 0 评论 0 原文

如何限制 cakephp 中的分页?

假设我有 400 条记录。
我只需要获取从第50条记录到第75条记录的25条记录 每页需要显示5条记录
我如何在分页中做到这一点?

示例代码:

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

            );

How to Limit the paginate in cakephp ?

Assume that i have 400 records.
I need to get only 25 records from 50th record to 75th record
and need to display 5 records per page.
How i can do this in paginate ?

Sample Code:

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

            );

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

北渚 2024-11-17 16:06:56

您可以设置分页条件。

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

编辑:

来自此处的解决方案:

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

然后在模型中:

public function paginateCount($conditions = null, $recursive = 0, $extra = array())
  {
  if( isset($extra['totallimit']) ) return $extra['totallimit'];
  }

You can set conditions for the pagination.

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

EDIT:

A solution from here:

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

And then in the Model:

public function paginateCount($conditions = null, $recursive = 0, $extra = array())
  {
  if( isset($extra['totallimit']) ) return $extra['totallimit'];
  }
っ左 2024-11-17 16:06:56

改进版本参考: http://www .mainelydesign.com/blog/view/best-paginatecount-cakephp-with-group-by-support

这将返回正确的总计数,以较小者为准。

public function paginateCount($conditions = null, $recursive = 0, $extra = array()) 
    {
        $conditions = compact('conditions');
        if ($recursive != $this->recursive) {
            $conditions['recursive'] = $recursive;
        }
        unset( $extra['contain'] );
        $count = $this->find('count', array_merge($conditions, $extra));

        if (isset($extra['group'])) {
            $count = $this->getAffectedRows();
        }

        if (isset($extra['totallimit']) && $extra['totallimit'] < $count) {
            return $extra['totallimit'];
        }

        return $count;
    }

Improved version with reference of: http://www.mainelydesign.com/blog/view/best-paginatecount-cakephp-with-group-by-support

This return the correct total count base on whichever is less.

public function paginateCount($conditions = null, $recursive = 0, $extra = array()) 
    {
        $conditions = compact('conditions');
        if ($recursive != $this->recursive) {
            $conditions['recursive'] = $recursive;
        }
        unset( $extra['contain'] );
        $count = $this->find('count', array_merge($conditions, $extra));

        if (isset($extra['group'])) {
            $count = $this->getAffectedRows();
        }

        if (isset($extra['totallimit']) && $extra['totallimit'] < $count) {
            return $extra['totallimit'];
        }

        return $count;
    }
卖梦商人 2024-11-17 16:06:56

在 CakePHP v2.x 中使用 maxLimit 。

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

阅读更多相关信息 此处

Use maxLimit in CakePHP v2.x .

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

read more about it here.

李不 2024-11-17 16:06:56
$query = $this->User->find('all', [
    'recursive' => 2,
    'order' => array('Profile.winning' => 'DESC'),
    'limit' => 25, 
    'offset' => 50
]);
$this->paginate = array(
    $query,
    'limit' => 5
);
$query = $this->User->find('all', [
    'recursive' => 2,
    'order' => array('Profile.winning' => 'DESC'),
    'limit' => 25, 
    'offset' => 50
]);
$this->paginate = array(
    $query,
    'limit' => 5
);
热风软妹 2024-11-17 16:06:56

在 cakephp 4.x 版本中我们必须像下面这样调用

 public function index()
    {
        $this->loadComponent('Paginator');
        $settings = array(
            'limit' => 50
        );
        $prices = $this->Paginator->paginate($this->Prices->find(), $settings);
        $this->set(compact('prices'));
    }

In cakephp 4.x version we have to call like below

 public function index()
    {
        $this->loadComponent('Paginator');
        $settings = array(
            'limit' => 50
        );
        $prices = $this->Paginator->paginate($this->Prices->find(), $settings);
        $this->set(compact('prices'));
    }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文