Trên thực tế, nếu bạn CÓ THỂ làm điều đó với tìm kiếm, bạn CÓ THỂ làm điều đó với phân trang. Bạn có thể xem tại đây
Nhưng để cụ thể hơn, bạn có thể thêm các điều kiện / giới hạn / trường / chứa / thứ tự, v.v. mà bạn sử dụng để tìm vào hàm phân trang.
Tôi chưa sử dụng nhóm trong phân trang nhưng nó NÊN hoạt động:D
Trong trường hợp của bạn, bạn sẽ có một cái gì đó như thế này:
$this->paginate = array(
'fields' => array(
'Product.category_id',
'COUNT(Product.hotel_id) as total'
),
'group' => array(
'Product.category_id HAVING COUNT(Product.hotel_id) > 1')
)
);
$data = $this->paginate('Product');
Hy vọng nó hoạt động, hãy đăng nhận xét về kết quả của bạn, nếu nó không hiệu quả, bạn sẽ phải ghi đè nó, vì nó không chấp nhận điều kiện nhóm ... mặc dù tôi nghĩ nó sẽ hoạt động vì cuối cùng thì phân trang cũng là một kết quả.
CHỈNH SỬA:
Bạn có thể thử làm điều gì đó như sau:
Ghi đè paginate () và paginateCount () nhưng với một tinh chỉnh, hãy bỏ qua một điều kiện để bạn có thể biết liệu nó có phải là phân trang với việc có hay không. Một cái gì đó như thế này:
function paginate($conditions, $fields, $order, $limit, $page = 1, $recursive = null, $extra = array()){
//if no having conditions set return the parent paginate
if (empty($conditions['having'])
return parent::paginate($conditions, $fields, $order, $limit, $page, $recursive, $extra)
//if having conditions set return your override
//override code here
}
Sau đó, bạn làm điều gì đó tương tự trong paginateCount (), theo cách đó bạn có một phân trang có chọn lọc. nhớ bỏ đặt $ điều kiện ['have'] khi nó không cần thiết hoặc nhớ đặt nó ở đâu đó không ảnh hưởng đến việc tìm kiếm của bạn;)