【发布时间】:2012-03-12 00:09:41
【问题描述】:
我发现在我的许多控制器方法中,我必须对结果进行分页,而方法之间只有一个或两个条件发生变化。我还需要有时不分页的选项。作为一个完整的编程新手,我想练习 DRY,所以在我在控制器中编码之前学习如何为可能的分页准备模型。我开始根据this Stack Overflow question 中的答案在我的模型中构建我的查询。不幸的是,提出这个问题的人没有包含他们代码的第一部分,所以我真的不知道他们模型查询的第一部分看起来如何。当我使用下面的代码时,模型上出现两个非法偏移类型错误。以下是我的模型代码:
<?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);
}
}
?>
【问题讨论】: