Dříve jsem měl přesně stejný požadavek na stránkování a dokázal jsem to zprovoznit pomocí CodeIgniter Active Record.
Nejprve nastavte volbu SQL_CALC_FOUND_ROWS
jako pseudo sloupec ve vašem příkazu select a nastavte únikový dotaz na hodnotu false:
$this->db->select('SQL_CALC_FOUND_ROWS null as rows, other columns ...',FALSE);
Poté, co provedete dotaz se zavedeným limitem a offsetem, přiřaďte sadu výsledků k poli návratů:
$data = $this->db->get();
$return['results'] = $data->result();
// Do something with the results
Nakonec spusťte druhý dotaz, abyste získali nalezené řádky a také je přiřadili k poli návratů. Používám zde řetězení metod, abych to všechno udělal v jednom kroku.
$return['rows'] = $this->db->query('SELECT FOUND_ROWS() count;')->row()->count;
A vrátí výsledek a pole počtu řádků.
return $return;