一、需求场景:
在项目中我们经常要展示数据,如果一次性加载全部数据,不便于我们浏览,对系统速度还有一定的影响。因此,可以在项目中使用分页功能,只展示一定数量的、我们较为关注的数据,并不需要加载全部数据。比如:显示管理员列表信息、文章列表信息、栏目列表信息等;有时我们要查询文章,输入一个字、一个词或者几个字进行模糊查询相应文章,就要在分页时在每一页都要传递查询关键字;还有一种比如上一篇文章和下一篇文章,我们只需要这种简洁模式并不需要复杂的分页显示效果来展示数据。
在具体使用时我们又分为三种场合,
第一种只分页显示需要的数据:如管理员信息表
第二种只显示分页项中的上一条和下一条:
第三种带查询条件的分页功能:
二、遇到的问题:
1.不带分页查询参数的使用方法?
2.带有分页查询参数的使用方法?
3.分页简单模式上一页和下一页,不需要显示其内容?
三、解决方法:
1.不带查询参数的分页
$admin=db(‘admin’)->order(‘id desc’)->paginate(10);
前台显示分页代码:{$admin->render()}
2.带有分页查参数
代码如下:
/**
* 搜索文章
*/
public function index(){
$keywords=input(‘keywords’);
if($keywords){
$map[‘title’]=[‘like’,’%’.$keywords.’%’];
//$articles=Article::where($map)->order(‘id desc’)->paginate(10);
$articles=Article::where($map)->order(‘id desc’)->paginate($listRows = 1, $simple = false, $config = [
‘query’=>array(
‘keywords’=>$keywords
),
]);
$this->assign(array(
‘articles’=>$articles,
‘keywords’=>$keywords,
‘count’=>count($articles,1),
));
}else{
$this->assign(array(
‘articles’=>null,
‘keywords’=>’暂无关键字’
));
}
return $this->fetch();
}
3.分页简洁模式只显示上一页和下一页
$result=db(‘admin’)->order(‘id’,’desc’)->paginate($listRows = 1,
$simple = true
, $config=[]);//$simple为true,则分页显示效果为简洁模式
四、小结:
分页功能在项目中使用是很频繁,掌握和灵活使用它是非常有必要的,在以后的项目中根据实际需求,灵活应用好它的三种使用方式。第一种和第三种相对简单,唯有传递查询参数的分页相对较为难懂,多加练习。