В основном $ this-> paginate не принимает результат запроса в качестве первого параметра. Если вам так нравится, что ваша логика БД в модели делает это следующим образом:
Модель
function getActiveConditions() {
retrun array(
'limit' => 10,
'order' => array('Plan.monthly_cost' => 'asc'),
'conditions' => array('PlanDetail.active' => 1)
);
}
в вашем контроллере:
function search() {
$this->Plan->recursive = 2;
$activeConditions = $this->Plan->getActiveConditions();
$this->set('plans', $this->paginate($this->Plan, $activeConditions));
}
Объяснение: метод paginate разбивает на страницы модель, переданную в качестве первого аргумента (или, если он равен null, это модель контроллера по умолчанию) и использует второй параметр, чтобы применить некоторые ограничения к результату.
Установите флажок «Содержимое» для этой рекурсии = 2 или, по крайней мере, отмените эти отношения, которые не нужны.