CakePHP分页最大限制不起作用

CakePHP分页最大限制不起作用,php,cakephp,Php,Cakephp,我使用的是CakePHP2.x。我无法设置我记录的最大限制 请检查我的代码: App::uses('AppController', 'Controller'); class BroadcastsController extends AppController { public $components = array('Paginator'); public function broadcast(){ $this->Paginator-&

我使用的是CakePHP2.x。我无法设置我记录的最大限制

请检查我的代码:

App::uses('AppController', 'Controller');
class BroadcastsController extends AppController {
   public $components = array('Paginator');

   public function broadcast(){           
         $this->Paginator->settings = array('limit' => 10,  'order' => array('Broadcast.no_of_user' => 'DESC'), 'group' => 'Broadcast.broadcaster_id');
         $popularRooms = $this->Paginator->paginate('Broadcast');
         pr($popularRooms); //fetch 200 records
         $this->set('popularRooms', $popularRooms);
   }
}
以上
pr($popularRooms)我得到200条记录,但我想要前50条记录,每页显示10条记录。我使用的是
'maxLimit'=>50
,但此代码与
'limit'=>50
相同。请帮帮我

public function list_posts() {
    $settings = array(
       'limit' => 25, // here
       'order' => array(
          'Post.title' => 'asc'
        )
    );
    $this->Paginator->settings = $this->settings;
    // similar to findAll(), but fetches paged results
    $data = $this->Paginator->paginate('Posts');
    $this->set('data', $data);

}

我相信您不必拥有$this->Paginator->settings=

public function list_posts() {
$settings = array(
   'limit' => 25, // here
   'order' => array(
      'Post.title' => 'asc'
    )
);
// similar to findAll(), but fetches paged results
$data = $this->Paginator->paginate('Posts');
$this->set('data', $data);

在分页器设置中首先设置maxLimit,然后设置limit,如下所示:

$this->Paginator->settings = array(
 'maxLimit' => 50,  
 'limit' => 10,  
 'order' => array('Broadcast.no_of_user' => 'DESC'), 
 'group' => 'Broadcast.broadcaster_id'
);

仅在逻辑上设置其中一个不会更改任何内容。

在这种情况下,您可以在分页器设置中使用“extras”数组

$this->Paginator->settings = array('limit' => 10, 'max_record'=>50, 'order' => array('Broadcast.no_of_user' => 'DESC'), 'group' => 'Broadcast.broadcaster_id');
在您的模型或AppModel中覆盖paginateCount函数

class Broadcast extends AppModel { 
function paginateCount($conditions, $recursive, $extra) {
    $param = array_merge(compact('conditions', 'recursive'), $extra);
    $count = $this->find('count', $param);
    if (!empty($extra['max_record']) && $count > $extra['max_records']) {
      $count = $extra['max_record'];
    }
    return $count;
  } 
}

默认情况下,CakePHP将可获取的最大行数限制为100。您可以将其作为分页选项的一部分进行调整,如下所示

public $paginate = array(
    // other keys here.
    'maxLimit' => 10
);
对于您的代码,像这样设置maxLimit

 $this->Paginator->settings = array('limit' => 10,'maxLimit'=>50,'order' => array('Broadcast.no_of_user' => 'DESC'), 'group' => 'Broadcast.broadcaster_id');

您在哪里声明了
Paginator
组件&
PaginatorHelper
?请正确分享您的代码。您好@u2460470我已经更新了我的问题。请检查。在我的代码上面,我得到了200条记录,我需要50条记录,每页10条。尝试在“maxLimit”=>50“maxLimit”=>50中添加此道具。这与“limit”=>50相同
“maxLimit”=>50
似乎与
“limit”=>50相同,我看不出区别。谢谢桑吉布的回答。)