Trước đây, tôi đã có yêu cầu chính xác tương tự đối với việc phân trang và tôi đã có thể làm cho nó hoạt động bằng cách sử dụng CodeIgniter Active Record.
Đầu tiên, đặt tùy chọn SQL_CALC_FOUND_ROWS
dưới dạng cột giả trong câu lệnh chọn của bạn và đặt truy vấn thoát thành sai:
$this->db->select('SQL_CALC_FOUND_ROWS null as rows, other columns ...',FALSE);
Sau đó, sau khi bạn thực hiện truy vấn của mình với giới hạn và bù đắp tại chỗ, hãy gán tập hợp kết quả cho một mảng trả về:
$data = $this->db->get();
$return['results'] = $data->result();
// Do something with the results
Cuối cùng, hãy chạy truy vấn thứ hai để lấy các hàng tìm được và cũng gán hàng đó cho mảng trả về. Tôi đang sử dụng chuỗi phương thức ở đây để thực hiện tất cả trong một bước.
$return['rows'] = $this->db->query('SELECT FOUND_ROWS() count;')->row()->count;
Và trả về kết quả và mảng đếm hàng.
return $return;