Ich hatte zuvor genau die gleiche Anforderung an die Paginierung und konnte sie mit CodeIgniter Active Record zum Laufen bringen.
Setzen Sie zuerst die Option SQL_CALC_FOUND_ROWS
als Pseudospalte in Ihrer Select-Anweisung und setzen Sie die Escape-Abfrage auf false:
$this->db->select('SQL_CALC_FOUND_ROWS null as rows, other columns ...',FALSE);
Nachdem Sie dann Ihre Abfrage mit dem Limit und dem Offset ausgeführt haben, weisen Sie die Ergebnismenge einem Rückgabearray zu:
$data = $this->db->get();
$return['results'] = $data->result();
// Do something with the results
Führen Sie abschließend eine zweite Abfrage aus, um die gefundenen Zeilen abzurufen, und weisen Sie diese auch dem Rückgabearray zu. Ich verwende hier Methodenverkettung, um alles in einem Schritt zu erledigen.
$return['rows'] = $this->db->query('SELECT FOUND_ROWS() count;')->row()->count;
Und geben Sie das Ergebnis und das Zeilenanzahlarray zurück.
return $return;