Создать компонент от CActiveRecord и наследловаться от созданного
public $_limit = 10;
public $_offset = 0;
public $_order = '';
// AR Limit, Offset
public function limit($limit = 0, $offset = 0)
{
$this->_limit = (int)Yii::app()->request->getParam('limit');
$this->_offset = (int)Yii::app()->request->getParam('offset');
$this->getDbCriteria()->mergeWith(
array(
'limit' => $limit ? $limit : $this->_limit,
'offset' => $offset ? $offset : $this->_offset,
)
);
return $this;
}
// AR Group
public function group($group = array())
{
if(is_array($group)) $_group = $group;
else $_group[] = $group;
$this->getDbCriteria()->mergeWith(
array(
'group' => implode(',', $_group),
)
);
return $this;
}
// AR Order by
public function order($order = '', $desc = false)
{
$this->_order = (string)Yii::app()->request->getParam('order');
if($order == '') $order = $this->_order;
if(!$order) return $this;
$this->getDbCriteria()->mergeWith(
array(
'order' => $order . ($desc? ' DESC': ' ASC'),
)
);
return $this;
}