在paginate 执行时,后面必需带上参数,格式为
$data = Db::name('classes')
->where($where)
->order('id desc')
->paginate('', '', ['query' => $where]);
而在这之前,分页传递值时,是新的数组格式类似:
Array(
[name] => Array (
[0] => like [1] => %王%
)
[page] => 2
)
tp写查询条件都是 $where['字段']=字段值,或者['like','%字段值%']格式,而在tp5分页中,传递的值直接就是这种格式,也就是说可以直接把接到的值$this->param->post()作为条件放入sql语句中。
但实际应用时,是报了错的,不知道为什么。所以是直接把接到的值又重新做了处理
$keyword = preg_replace('/%+/i','',$arr['name']['1']);
$where['name'] = ['like', "%$keyword%"];
$this->assign('keyword', $keyword);
还是放到$where中,这样就回到最一开始的情况了。
(所有问题是同事帮忙解决的,新手菜鸟实在是搞不通)
另一种方式,
$data->appends($arr);
$this->assign('page', $data->render());
$arr 为搜索条件,必须为数组。