Jeg har tidligere haft nøjagtig samme krav til paginering, og jeg var i stand til at få det til at fungere ved hjælp af CodeIgniter Active Record.
Indstil først indstillingen SQL_CALC_FOUND_ROWS
som en pseudo-kolonne i din select-sætning og indstil escape-forespørgsel til false:
$this->db->select('SQL_CALC_FOUND_ROWS null as rows, other columns ...',FALSE);
Når du har udført din forespørgsel med grænsen og offset på plads, skal du tildele resultatsættet til et returarray:
$data = $this->db->get();
$return['results'] = $data->result();
// Do something with the results
Til sidst skal du køre en anden forespørgsel for at få de fundne rækker og også tildele det til returarrayet. Jeg bruger metodekæde her til at gøre det hele i ét trin.
$return['rows'] = $this->db->query('SELECT FOUND_ROWS() count;')->row()->count;
Og returner resultatet og rækketæller-arrayet.
return $return;