关于Paginator的新手问题。 我有一个带桌子的DB;国家,地区和财产[以及更多表格] 现在,当我查看区域以显示按地区排序的属性时:例如domain.com/regions/view/33,Paginator计算并显示与区域相关的信息[共60个区域],我想让Paginator显示/计算区域33中的属性数量[3个属性],如何完成这个?
这是我在RegionsController.php中的代码
public function index() {
$this->Region->recursive = 0;
$this->paginate = array('limit' => 10,'order' => 'Region.id ASC');
$this->set('regions', $this->paginate());
}
public function view($id = null) {
if (!$this->Region->exists($id)) {
throw new NotFoundException(__('Invalid region'));
}
$options = array('conditions' => array('Region.' .$this->Region->primaryKey => $id));
$this->set('region', $this->Region->find('first', $options));
$this->paginate = array('limit' => 10,'order' => 'Region.id ASC');
$this->set('regions', $this->paginate());
}
这是在我的view.ctp中显示Paginator的代码
<br />
<div class="regions view">
<b><center><?php echo nl2br(h($region['Region']['titletag'])); ?></center></b>
<div class="paging">
<?php
echo $this->Paginator->prev('< ' . __('previous'), array(), null, array('class' => 'prev disabled'));
echo $this->Paginator->numbers(array('separator' => ''));
echo $this->Paginator->next(__('next') . ' >', array(), null, array('class' => 'next disabled'));
?>
</div>
这是Region.php模型中的代码。
class Region extends AppModel {
/**
* Display field
*
* @var string
*/
public $displayField = 'regionname';
/**
* belongsTo associations
*
* @var array
*/
public $belongsTo = array(
'Country' => array(
'className' => 'Country',
'foreignKey' => 'country_id',
'conditions' => '',
'fields' => '',
'order' => ''
)
);
/**
* hasMany associations
*
* @var array
*/
public $hasMany = array(
'Property' => array(
'className' => 'Property',
'foreignKey' => 'region_id',
'dependent' => false,
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'exclusive' => '',
'finderQuery' => '',
'counterQuery' => ''
)
);
任何帮助都非常感激。
答案 0 :(得分:0)
使用CakePHP's counterCache保留每个区域的属性数的常量计数。这很容易,CakePHP会为你做好所有的工作。
然后,你在regions
表中只有一个“property_count”字段,瞧 - 你可以按它排序,过滤它等等等。
每次添加属性或删除属性时,CakePHP都会自动为您更新计数。