Jag har tidigare haft exakt samma krav på paginering, och jag kunde få det att fungera med CodeIgniter Active Record.
Ställ först in alternativet SQL_CALC_FOUND_ROWS
som en pseudokolumn i din select-sats och ställ in escape-frågan till false:
$this->db->select('SQL_CALC_FOUND_ROWS null as rows, other columns ...',FALSE);
Sedan, efter att du utfört din fråga med gränsen och offset på plats, tilldela resultatuppsättningen till en returmatris:
$data = $this->db->get();
$return['results'] = $data->result();
// Do something with the results
Slutligen, kör en andra fråga för att få de hittade raderna och tilldela även den till returmatrisen. Jag använder metodkedja här för att göra allt i ett steg.
$return['rows'] = $this->db->query('SELECT FOUND_ROWS() count;')->row()->count;
Och returnera resultatet och radräkningsmatrisen.
return $return;