Anteriormente tenía exactamente el mismo requisito para la paginación y pude hacerlo funcionar usando CodeIgniter Active Record.
Primero, configure la opción SQL_CALC_FOUND_ROWS
como una pseudocolumna en su declaración de selección y establezca la consulta de escape en falso:
$this->db->select('SQL_CALC_FOUND_ROWS null as rows, other columns ...',FALSE);
Luego, después de ejecutar su consulta con el límite y la compensación en su lugar, asigne el conjunto de resultados a una matriz de retorno:
$data = $this->db->get();
$return['results'] = $data->result();
// Do something with the results
Finalmente, ejecute una segunda consulta para obtener las filas encontradas y también asígnelas a la matriz de retorno. Estoy usando el encadenamiento de métodos aquí para hacerlo todo en un solo paso.
$return['rows'] = $this->db->query('SELECT FOUND_ROWS() count;')->row()->count;
Y devolver el resultado y la matriz de recuento de filas.
return $return;