前言:后台列表的分页 与 接口列表的分页
后台列表的分页
知识点:tp5手册可以先查阅一下limit/page/paginate;paginate比较难理解的地方应该是它怎么把前端的页面也写进去了(这个页面的代码我不清楚咋办),我们只需要传个render()后的变量就行了;如果使用paginate别忘记了分页参数配置,这是一个步骤不要忘记了
页面部分;两种方式直接输出与单独赋值模板变量,两者没有差别
<!--分页-->
<div class="row">
<div class="col-xs-12">
<div class="col-sm-6 col-md-6" style="padding-left:0px;">
</div>
<div class=" col-sm-6 col-md-6 text-right" style="padding-right:0px;">
<div class="dataTables_paginate paging_bootstrap">
//这里是第二种,后台赋值了page变量
{$page}
</div>
</div>
</div>
</div>
<!--分页结束-->
后台 控制器
$pageData = $this->model->where($where)
->paginate($this->_pagesize,false,['query' => request()->param()]);
$this->assign('page',$pageData->render());
接口列表的分页
主要需要返回 所有记录条数,一共分了多少页,当前页数,当前分页大小(每页展示几条数据),列表数据
public function getListInfo($where,$page,$pages_size){
//分页参数
if(empty($page)) $page = $this->_page;
if(empty($pages_size)) $pages_size = $this->_pagesize;
//查询数据
$info = $this->db()->where($where);
$newInfo = clone $info;
$count = $newInfo->count();
$all_page = ceil($count/$pages_size);
//精准返回所需字段
$field = 'b.*,r.room_num,bu.building_name,bu.org_id,r.floor,bt.name bed_type_name,r.room_type';
$list = $info->limit(($page-1)*$pages_size,$pages_size)->field($field)->order("id desc")->select();
$list = $this->asArray($list);
$confDictionary = new ConfDictionary();
//处理需要 转换的字段
foreach ($list as $k=> &$v){
$v['room_type_name'] = $confDictionary->getNameById($v['room_type']);
}
//返回数据,总记录数,总页数,当前页,当前分页大小,列表数据
$return = ['all'=>$count,'all_page'=>$all_page,'page'=>$page,'limit'=>$pages_size,'list'=>$list];
return $return;
}