Я обнаружил, что в некоторых методах моего контроллера мне приходится разбивать результаты на страницы только с одним или двумя условиями, меняющимися между методами.Я также нуждался в опции, чтобы НЕ разбивать на страницы время от времени.Как полный новичок в программировании, я хотел бы попрактиковаться в DRY, и поэтому я изучил, как подготовить свою модель к возможному разбиванию на страницы, прежде чем кодировать в контроллере.Я начал строить свой запрос в моей модели, основываясь на ответе на этот вопрос переполнения стека .К сожалению, тот, кто задал вопрос, не включил первую часть своего кода, поэтому я действительно растерялся из-за того, как выглядит первая часть их модельного запроса.Когда я использую код ниже, я получаю две недопустимые ошибки типа смещения на модели.Ниже код моей модели:
<?php class Unit extends AppModel {
public $name='Unit';
public $actsAs = array('Containable');
public $belongsTo=array(
'User',
'Complex',
'Location',
);
public $hasOne=array(
'Image'
);
function getListings() {
$paginate=array();
$qOptions=array();
$this->contain(array(
'User'=>array('id'),
'Location',
'Complex',
'Image'
)
);
if($paginate) {
return $qOptions;
}
else {
$data= $this->find('all', $qOptions);
return $data;
}
}
}
?>
вот мой метод контроллера:
<?php
class LodgingsController extends AppController {
public $name='Lodgings';
public $layout='pagelayout';
public $uses=array('User', 'Unit', 'Location');
public $helpers=array('Text','Html','Js','GoogleMapV3');
public $paginate=array();
public function debug() {
$qOptions=array('conditions'=>array('Unit.active'=>1, 'Unit.type'=>'condo'), 'limit'=>9, 'order'=>array('Unit.id'=>'asc'));
$opts['paginate'] = true;
$paginateOptions=$this->Unit->getListings($opts);
$this->paginate=$paginateOptions;
$stuff=$this->paginate('Unit');
$this->set('units', $stuff);
}
}
?>