2016-08-09 3 views
0

私はCakePHP 2.xを使用していますが、私のコントローラーでページネーションを適用したいのですが、あるケースでは包含キーで、 。例として、次の例を考えてみましょう。CakePHP 2が付いていてもいなくてもページ付けCakePHP 2

class BlogController extends AppController { 
    public $name = "Blog"; 
    public $paginate = array(
    'Post'=>array(
      'limit'=>30, 
      'conditions'=>array('publish'=>1), 
      ), 
     ); 

    function just_posts() { 
     // I want to paginate Post as it is 
    } 

    function posts_with_comments() { 
     // I want paginate Post with 'contain'=>'comments' 
    } 
} 

実際のケースでは、これを実行する目的は、クエリ時間を短縮するためのものです。しかし、私はこれを実装する方法を失っています。 $ this-> paginate(...)は、レコードをフィルタリングするための引数だけを受け入れます。コントローラーの同じモデルで2つのページャーを使用できるようにする方法はありますか?

答えて

1

あなたはのpaginateを行う前にcontainを含めるために、関連するアクション内、コントローラのpaginateプロパティを変更することができる必要があります: -

$this->paginate['Post']['contain'] = 'Comment'; 

これは、特定のアクションのためのコントローラのデフォルトを延長します。

+1

ありがとう@drmonkeyninja、これは非常に便利です。私はページングの限界を設定するときにも同じ問題に遭遇しました。私はもっ​​と幸せか恥ずかしいかどうかわからない:) – John

関連する問題