2016-08-09 3 views
0

Я использую CakePHP 2.x и хотел бы применить разбиение на страницы в моем контроллере, но я хотел бы, чтобы он был доступен в одном случае с ключом сложения, а другой случай без ключа сложения , В качестве примера рассмотрим следующий пример:Paginate With and Without Contain Key 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 (...) принимает только аргумент для фильтрации записей. Есть ли способ сделать два paginators доступными для одной модели в контроллере?

ответ

1

Вы должны быть в состоянии изменить paginate свойство вашего контроллера в пределах соответствующего действия, чтобы включить contain, прежде чем делать разбивать на страницы: -

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

Это будет распространяться по умолчанию контроллера для конкретного действия.

+1

Спасибо @drmonkeyninja, это очень полезно знать. Я также столкнулся с той же проблемой при установке предела для paginate. Я не уверен, счастлив ли я или смущен :) – John