2016-12-12 16 views
1

cakephpページネームの順序に問題があります。このようなCakePHP 3で選択した関係順に選択してください。

私のコードビュー:

$list = $this->paginate(
      $this->Akwaria->find() 
       ->select(['countDrugs'=>"(SELECT COUNT(`ad`.`id`) FROM `akwaria_drugs` `ad` WHERE `ad`.`id_akwaria` = Akwaria.id)"]) 
       ->select($this->Akwaria) 
       ->where($where),['limit'=>'30','order'=>['id'=>'desc']] 
     ); 

とCTPファイルでは、私はこのような行があります。

<th><?= $this->Paginator->sort('countDrugs', "Podanych Leków") ?></th> 

を私の問題は、それが列に列をソートできるようにする必要があるということです"countDrugs"しかし、これは標準的な作業方法ではなく、ドキュメンテーションではそのような関係があるかのように指示を見つけることができます。

答えて

1

デフォルトでは、テーブルにある非仮想列に対して並べ替えを行うことができます。 これは、ユーザーが注文するのに費用がかかるインデックスのない 列を並べ替えることができるため、時には望ましくないことがあります。 sortWhitelistオプションを使用してソート可能なフィールドのホワイトリスト を設定できます。この オプションは、関連するすべてのデータをソートしたい場合に必要な、またはあなたのページネーションクエリの一部であってもよい 計算フィールドされています。この

$this->paginate = [ 
    'sortWhitelist' => [ 
     'countDrugs', 
    ], 
]; 
のようなあなたのケースでの使用には

Control which Fields Used for Ordering

テスト済みで正常に動作しています

関連する問題