2016-10-17 12 views
2

cakephpでページ分割された結果をソートする際に助けが必要3.3 複数の列で並べ替えたいが、次の(または他のページに行く) それは機能ですか、バグですか?Cakephp 3.3複数の列でページ分割の結果を並べ替える

これは、コントローラでの改ページコマンドです:

$this->paginate = [ 
      'limit' => 20, 
      'order' => [ 
       'Iktato.evszam' => 'DESC', 
       'Iktato.iktatoszam' => 'DESC' 
       ] 
     ]; 

生成されたクエリ:

SELECT 
    Iktato.id AS `Iktato__id`, 
    Iktato.iktatoszam AS `Iktato__iktatoszam`, 
    Iktato.evszam AS `Iktato__evszam`, 
    Iktato.datum AS `Iktato__datum`, 
    Iktato.honnan AS `Iktato__honnan`, 
    Iktato.felado AS `Iktato__felado`, 
    Iktato.cimzett AS `Iktato__cimzett`, 
    Iktato.targy AS `Iktato__targy`, 
    Iktato.tema AS `Iktato__tema`, 
    Iktato.iktatoszemely AS `Iktato__iktatoszemely`, 
    Iktato.megjegyzes AS `Iktato__megjegyzes`, 
    Iktato.allapot AS `Iktato__allapot`, 
    Iktato.user_id AS `Iktato__user_id` 
FROM 
    iktato Iktato 
ORDER BY 
    Iktato.evszam desc 
LIMIT 
    20 OFFSET 20 

生成されたページネーションリンクは、唯一の並べ替えのパラメータを持っています。 Paginatorのヘルパーに2番目のパラメータも考慮させるにはどうしたらいいですか?

答えて

0

カスタムファインダーを使用してこれを行うことができます。お使いのモデルのテーブルクラスで:

public function findOrdered(Query $query, array $options) 
{ 
    return $query 
     ->order([ 
      'Iktato.evszam' => 'DESC', 
      'Iktato.iktatoszam' => 'DESC' 
     ]); 
} 

そして、あなたのコントローラで:期待どおりにページネーション列のソート($this->Paginator->sort('evszam')、など)を使用している場合けれどもこれにより

$this->paginate = [ 
    'limit' => 20, 
    'finder' => 'ordered', 
]; 

ページネーションリンクは、動作するはずですあなたの見解にはまだ問題があります。

関連する問題