ThinkPHP框架调用page类分页无法关联表的情况,解决ThinkPHP框架多表分页、TP联表分页、多表分页问题

时间:2022-10-27 14:26:09
ThinkPHP框架调用page类分页无法关联表的情况
已封装的方法,可以直接修改参数拿来用
/**
 *  通用列表
 * @param $model           object  M() or D() 的 object
 * @param $where           array   搜索条件
 * @param int $pageShow    number  每页显示数量
 * @param string $orderBy  string  排序条件
 * @param string $field    string  显示字段
 * @param string $groupBy  string  分组字段
 */
public function generalGetList($model,$where=1,$pageShow = 1,$orderBy = '',$field = '',$groupBy=''){
    $pageDisplay = array();
    /**********重新设置条件防止无法联表查询的问题*********/
    $OPT=new \ReflectionProperty($model,'options');
    $OPT->setAccessible(true);
    $options['where']=$where;
    $options = array_merge( (array)$OPT->getValue($model), $options );
    /************************************************-*/

    if($pageShow > 0) {
        import('ORG.Util.Page');// 导入分页类
        $count = $model->where($where)->count();
        $page = new Page($count,$pageShow);
        $page->show();
        $model->limit($page->firstRow.','.$page->listRows);
        $pageDisplay['total'] = $count;
        $pageDisplay['limit'] = $page->listRows;
        $options['limit'] = $page->firstRow.','.$page->listRows;
    }
    if($orderBy){
        $options['order'] = $orderBy;
    }
    if($groupBy){
        $options['group'] = $groupBy;
    }
    $model->setProperty('options',$options);//重新设置条件防止无法联表查询的问题
    if($field){
        $model->field($field);
    }
    $list = $model->where($where)->order($orderBy)->select();
    dump($list);
    $this->assign('pageDisplay',$pageDisplay);
    $this->assign('list',$list);
}