CakePHP 分页最大限制不起作用
CakePHP pagination maximum limit not working
我正在使用 cakephp 2.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,如下所示:
$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.You 可以将其作为分页选项的一部分进行调整,如下所示
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');
我正在使用 cakephp 2.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,如下所示:
$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.You 可以将其作为分页选项的一部分进行调整,如下所示
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');