2013-04-29 18 views
7

Tôi có truy vấn này, tôi muốn đặt hàng bằng tổng số lượng. tôi phải sử dụng kết quả này trong paginate, Xin hãy giúp tôi ..Làm thế nào để sử dụng hàm tổng hợp SUM trong cakephp?

SELECT (SUM(OrderItem.quantity)) AS qty, `OrderItem`.`item_name` , 
`OrderItem`.`size` FROM `order_items` AS `OrderItem` WHERE 1 =1 
GROUP BY `OrderItem`.`item_name` , `OrderItem`.`size` 
ORDER BY (SUM(OrderItem.quantity)) DESC 

Tôi đã thử dưới mã, nhưng nó không hoạt động

$this->paginate = array('fields'=>array('(SUM(OrderItem.quantity)) as qty', 
             'OrderItem.item_name', 
            'OrderItem.size'), 
         'group'=>array('OrderItem.item_name','OrderItem.size'), 
         'order' => array('(SUM(OrderItem.quantity))'=>'DESC')); 

Trả lời

4

bạn có thể sử dụng "Custom Query Pagination¶" theo bên dưới liên kết:

http://book.cakephp.org/2.0/en/core-libraries/components/pagination.html#custom-query-pagination

Sử dụng này trong mô hình của bạn:

public function paginate($conditions, $fields, $order, $limit, $page = 1, $recursive = null, $extra = array()) { 
     $page--; 
     $offset=$limit*$page; 
     $result= $this->find('all',array('fields'=>array('(SUM(OrderItem.quantity)) as qty', 
      'OrderItem.item_name', 
      'OrderItem.size'),'group'=>array('OrderItem.item_name','OrderItem.size'),'order' => array('qty'=>'DESC'),'conditions'=>$conditions,'limit'=>$limit, 'offset'=>$offset)); 
     return $result; 

    } 
Các vấn đề liên quan