Преди имах точно същото изискване за пагинация и успях да го накарам да работи с помощта на CodeIgniter Active Record.
Първо задайте опцията SQL_CALC_FOUND_ROWS
като псевдо колона в оператора за избор и задайте escape-заявката на false:
$this->db->select('SQL_CALC_FOUND_ROWS null as rows, other columns ...',FALSE);
След това, след като изпълните заявката си с ограничението и изместването на място, присвоете резултатния набор на масив за връщане:
$data = $this->db->get();
$return['results'] = $data->result();
// Do something with the results
Накрая изпълнете втора заявка, за да получите намерените редове и също така да ги присвоите на масива за връщане. Използвам верижното свързване на методи тук, за да направя всичко в една стъпка.
$return['rows'] = $this->db->query('SELECT FOUND_ROWS() count;')->row()->count;
И върнете резултата и масива за броя на редовете.
return $return;