2013-08-21 130 views
0
[0] => Array 
     (
      [Host] => Array 
       (
        [id] => 2821 
        [user_id] => 7090 
      ) 
      [Review] => Array 
       (
         [0] => Array 
          (
           [id] => 852 
           [host_id] => 2821 
           [user_id] => 6592 
          ) 
         [1] => Array 
          (
           [id] => 853 
           [host_id] => 2821 
           [user_id] => 6532 
          ) 
     ) 
[1] => Array 
     (
      [Host] => Array 
       (
        [id] => 2221 
        [user_id] => 7390 
      ) 
      [Review] => Array 
       (
       ) 
     ) 

我想根據主機的計數檢查顯示分頁結果的順序。我嘗試使用虛擬字段的概念進行排序。CakePHP分頁訂單結果

請幫我建議這個..

+1

「我想使用的虛擬域的概念,排序「,所以你試過了什麼? – bowlerae

+0

我正在使用在Review Model中添加虛擬字段..... var $ virtualFields = array( 'rw_count'=>'COUNT(Review.host_id)' ); – alex

+0

以及你爲了完成這個目的而嘗試過什麼? (這就是我以前的意思,對不起,我不清楚) – bowlerae

回答

1

參考Cakephp websie

virtualFields的實現有一些限制。首先你 不能在條件,訂單, 或字段數組的關聯模型上使用虛擬字段。

但是解決方法是沿着線的東西有:

審查模式:

public $virtualFields = array('rw_count' => COUNT(Review.host_id)); 

主機型號:

class Host extends Model{ 
    public function __construct($id = false, $table = null, $ds = null) { 
     parent::__construct($id, $table, $ds); 
     $this->virtualFields['rw_count'] = $this->Review->virtualFields['rw_count']; 
    } 
} 

主機控制器

public $paginate = array(
    'limit' => 25, 
    'order' => array(
     'rw_count' => 'desc' 
    ) 
); 

既然我沒有你的方案的全部細節,這就是我想你會用什麼,但概念是相同的