Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tôi có thể phân trang một truy vấn tùy chỉnh mà không ghi đè phân trang mặc định không?

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;)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. cập nhật giá trị cột với cột của bảng khác dựa trên điều kiện

  2. Sao lưu (các) cơ sở dữ liệu bằng cách sử dụng truy vấn mà không sử dụng mysqldump

  3. Các max_connections trong MySQL 5.7

  4. Chỉ mục MySql bình thường là bắt buộc khi chúng ta có chỉ mục Tổng hợp

  5. Truy vấn tham số PHP / MySQL