以前はまったく同じページネーションの要件があり、CodeIgniterActiveRecordを使用してそれを機能させることができました。
まず、オプションSQL_CALC_FOUND_ROWS
を設定します selectステートメントの疑似列としてエスケープクエリを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
最後に、2番目のクエリを実行して、見つかった行を取得し、それを戻り配列に割り当てます。ここではメソッドチェーンを使用して、すべてを1つのステップで実行しています。
$return['rows'] = $this->db->query('SELECT FOUND_ROWS() count;')->row()->count;
そして、結果と行数の配列を返します。
return $return;