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

ホストのカウントレビューに基づいてページネーション結果の順序を表示したい.仮想フィールドの概念を使用してソートしようとしています。

これを提案するのを手伝ってください..

4

1 に答える 1

1

Cakephp Websieを参照してください

virtualFields の実装にはいくつかの制限があります。まず、条件、順序、またはフィールド配列の関連付けられたモデルで 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'
    )
);

あなたのスキーマの完全な詳細を持っていないことを考えると、これはあなたが使用できると私が推測するものですが、概念は同じままです

于 2013-08-21T16:58:01.563 に答える