简体   繁体   English

如何在 codeigniter 中使用查询生成器 class 进行分页 4

[英]How to paginate using query builder class in codeigniter 4

I'm doing project with CI v4.0.4.我正在使用 CI v4.0.4 做项目。 I like using query builder but I find difficult to paginate data from db.我喜欢使用查询生成器,但我发现很难对数据库中的数据进行分页。 When I run it I get error **Call to undefined method CodeIgniter\Database\MySQLi\Result::paginate() **.当我运行它时,我收到错误 **Call to undefined method CodeIgniter\Database\MySQLi\Result::paginate() **。 How can I use query builder class to paginate with model and controller methods.如何使用查询生成器 class 使用 model 和 controller 方法进行分页。

    //my model
    public function getData($page=0,$perPage=100){
        $builder = $this->db->table('categories')->paginate(5);
        return $builder;
    }

    //my controller
        public function index()
    {
        $pager=service('pager');
        $page=(int)(($this->request->getVar('page')!==null)?$this->request->getVar('page') : 1)-1; 

        $data = [
            'results' => $this->model->getData($page),
            'pager'  => $pager
        ];
        return view('test', $data);
    }

Model base pagination Model 基础分页

public function getWithRelations($perPage=10)
{
    $pager = service('pager');
    $page = (@$_GET['page']) ? $_GET['page'] : 1;
    $this->db->connect();
    $offset = ($page-1) * $perPage;

    $builder = $this->db->table('db_tab1 as t1');
    $data = $builder
        ->where('col','val')
        ->select('t1.*,t2.name as t2_name')
        ->join('db_tab2 as t2','t2.t1 = t1.id')
        ->orderBy('t1.id', 'DESC')
        ->get($perPage,$offset)
        ->getResult();

    $total = $builder->where('col','val')->countAllResults();

    return [
        'data'=>$data,
        'links' => $pager->makeLinks($page,$perPage,$total)
    ];
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM