我有一个模特:
class Service extends CActiveRecord
{
public static function model($className = __CLASS__)
{
return parent::model($className);
}
public static function getMainPageItems()
{
return self::model()->findAll(array(
'condition' => 'on_main = 1',
'order' => 'pos ASC'
));
public static function getNonMainPageItems()
{
return self::model()->findAll(array(
'condition' => 'on_main = 0',
'order' => 'pos ASC'
));
}
我想将模型的默认顺序设置为pos ASC
。
如何设置模型的默认顺序?
答案 0 :(得分:8)
使用CActiveRecord::defaultScope()
方法如下:
class Service extends CActiveRecord
{
...
public function defaultScope(){
return array(
'order'=>'pos ASC'
);
}
...
}
这将添加到模型上的所有查找方法。请阅读scopes和defaultScopes以获取更多信息
答案 1 :(得分:0)
解决此问题的一种方法是将私有成员添加到名为$ order的父类。
您需要为它创建getter和setter(以便您可以在需要时更改defalut)
然后只需在每个需要它的函数的'order'元素中调用$this->$order
。