怎么给cakephp分页函数限制与字段排序等,修改$this->paginate参数

一旦系统做大,用户多时不得不考虑优化查询数据的sql的字段问题,用什么字段查什么字段。
有两种方法可以解决:
1、给出当前控制器共有的查询条数字段等,比如:
var $paginate = array(
‘Note’ => array (
‘limit’ => 10,
‘order’ => array(‘Note.note_id’ => ‘desc’),
‘page’=>1)
);
这样在我查询note的时候会自动限制在10条,并按note_id排序的。
2、如果我不想用公用的限制条件怎么办,我想给当前的action自己的排序方法,或者限制的字段。
解决如下:
$this->paginate["User"]=array(
‘conditions’ => array(“User.user_id =”=>$this->Auth->user(‘user_id’)),
‘fields’ => array(‘User.user_id,User.user_icon,User.nickname’),
‘limit’ => ‘3′,
‘page’ => ‘1′
);

Comments (10)

儿童游戏七月 15th, 2009 at 20:07

文章不错

zcy七月 16th, 2009 at 14:43

非常感谢。

鸡蛋壳十二月 21st, 2009 at 19:36

请教个关于分页的问题,当我点击’下一页’的时候,就没有显示结果了,看了sql语句,好像是没有拿到’categories’的值,需要传值,怎么把id传进来呢
function view_in_category($id = null){
$this->paginate["Post"]=array(
‘limit’ => ‘1′,
‘order’ => array(‘Post.id’ => ‘desc’),
‘page’ => ‘1′
);
$this->set(‘categories’, $this->Category->findAll());
$this->set(‘posts’, $this->paginate(‘Post’,array(“Category_id =”=>$id)));
}
这是控制器代码
prev(‘<’disabled’));?>
numbers();?>
next(__(‘下一页’, true).’ >>’, array(), null, array(‘class’=>’disabled’));?>

这是视图代码
翻页的时候需要传入’categories’的id,怎么传入呢

鸡蛋壳十二月 21st, 2009 at 19:40

修正上一个问题,当点击下一页的时候,是没有拿到’categoriy_id’的值

鸡蛋壳十二月 21st, 2009 at 19:41

prev(‘<’disabled’));?>
numbers();?>
next(__(‘下一页’, true).’ >>’, array(), null, array(‘class’=>’disabled’));?>
这是视图代码

鸡蛋壳十二月 21st, 2009 at 22:33

视图代码贴不上去,贴的不全,就是教程里用的分页代码

admin十二月 22nd, 2009 at 01:21

你少了一句话,你看看那个分页的模板文件,把那句话添加上就行,id就能传了

鸡蛋壳十二月 22nd, 2009 at 05:08

是哪句话啊 该怎么写呢 我一直不知道怎么弄啊

鸡蛋壳十二月 22nd, 2009 at 05:12

豪哥 你可一定要救救我啊

开心凡人二月 10th, 2010 at 04:22

春节快到了,祝节日快乐,呵呵

Leave a comment

Your comment