In precedenza avevo lo stesso identico requisito per l'impaginazione e sono stato in grado di farlo funzionare utilizzando CodeIgniter Active Record.
Innanzitutto, imposta l'opzione SQL_CALC_FOUND_ROWS
come pseudo colonna nell'istruzione select e imposta la query di escape su false:
$this->db->select('SQL_CALC_FOUND_ROWS null as rows, other columns ...',FALSE);
Quindi, dopo aver eseguito la query con il limite e l'offset in atto, assegna il set di risultati a un array restituito:
$data = $this->db->get();
$return['results'] = $data->result();
// Do something with the results
Infine, esegui una seconda query per ottenere le righe trovate e assegnale anche all'array restituito. Sto usando il metodo concatenato qui per fare tutto in un solo passaggio.
$return['rows'] = $this->db->query('SELECT FOUND_ROWS() count;')->row()->count;
E restituisce l'array del risultato e del conteggio delle righe.
return $return;