最近在做项目时,遇到了一个问题,点击分类时带上参数id=3,查询出对应的产品,产品有一个分页,但是点击第二页的时候,
url变成了不带之前id参数的跳转,导致没有了查询条件,查询不出来商品,就去寻找解决方案。
首先看了看官方手册
分页参数
主要的分页参数如下:
参数 | 描述 |
---|---|
list_rows | 每页数量 |
page | 当前页 |
path | url路径 |
query | url额外参数 |
fragment | url锚点 |
var_page | 分页变量 |
type | 分页类名 |
也可以在调用分页方法的时候传入,例如:
$list = Db::name('user')->where('status',1)->paginate(10,true,[
'type' => 'bootstrap',
'var_page' => 'page',
]);
paginate函数中有三个参数
/**
* 分页查询
* @param int|array $listRows 每页数量 数组表示配置参数
* @param int|bool $simple 是否简洁模式或者总记录数
* @param array $config 配置参数
* page:当前页,
* path:url路径,
* query:url额外参数,
* fragment:url锚点,
* var_page:分页变量,
* list_rows:每页数量
* type:分页类名
* @return \think\Paginator
* @throws DbException
*/
public function paginate($listRows = null, $simple = false, $config = [])
然后在控制器中尝试
$cate_id = $this->request->param('id');
$page = max(1,(int)input('get.page'));
$pageSize = 1;
$count = ProductIndex::where('p_cate_id',$cate_id)->count();
$pro_list = ProductIndex::where('p_cate_id',$cate_id)->paginate($pageSize,$count,['id'=>$cate_id ]);
没有效果,然后尝试 把参数写成['id'=>$_GET]还是不行,
最后参考这篇文章,https://blog.csdn.net/ylwsn21/article/details/76577668
改为了
$cate_id = $this->request->param('id');
$page = max(1,(int)input('get.page'));
$pageSize = 1;
$count = ProductIndex::where('p_cate_id',$cate_id)->count();
$pro_list = ProductIndex::where('p_cate_id',$cate_id)->paginate($pageSize,$count,['query'=>$this->request->param() ]);
就查询成功了,哦耶!