I'm doing project with 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() **. How can I use query builder class to paginate with model and controller methods.
//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
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)
];
}