ThinkPHP3.2.3 模糊搜索分页功能实现
ThinkPHP3.2.3的分页类页面跳转时支持携带参数
ThinkPHPLibraryThinkPage.class.php
但是分页类在传入参数时只支持数组条件且只能是普通查询
因为分页类内部调用了U函数来拼装URL,但是U函数不支持参数是多重数组的形式
因此考虑区分传入分页类、传入数据库的参数数组
<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
public function index(){
# ThinkPHP自帶的分页类传参时只接受字符串类型,因此当参数是数组类型时创建两个数字来传参
# ThinkPHP的分页类通过在URL中传参来实现查询分页
# page_search用作Page类传参使用
$page_search = array();
# sql_search用作数据库查询时使用的条件
$sql_search = array();
foreach (I('param.') as $key => $value) {
if (empty($value)) {
continue;
}
# 公司名使用模糊搜索
if ($key == 'company_name') {
$page_search['company_name'] = $value;
$sql_search['company_name'] = array('like', '%'.$value.'%');
# 其他参数使用全匹配
}else{
$page_search[$key] = $value;
$sql_search[$key] = $value;
}
}
$Company = M('corp_info');
$count = $Company -> where($sql_search) -> count();
$pagesize = 10;
# Page类使用page_search来保证分页跳转时需要的参数
$Page = new \Think\Page($count, $pagesize, $page_search);
$show = $Page -> show();
$all_company_info = $Company
-> where($sql_search)
-> limit($Page->firstRow.','.$Page->listRows)
-> select();
$this -> assign('all_company_info', $all_company_info);
$this -> assign('page', $show);
$this -> display();
}
}