2013-01-01 29 views
2

我有一个模型:如何为模型的所有搜索操作设置默认条件?

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

如何设置模型的默认订单?

回答

8

使用CActiveRecord::defaultScope()方法如下:

class Service extends CActiveRecord 
{ 
    ... 
    public function defaultScope(){ 
     return array(
      'order'=>'pos ASC' 
     ); 
    } 
    ... 
} 

这将增加了对模型的所有发现的方法。请阅读scopesdefaultScopes以获取更多信息

+0

这对我来说是正确的。谢谢! – Ozerich

0

解决这个问题的一种方法是将一个私有成员添加到名为$ order的父类中。

您需要创建getter和setter它(这样,当你想,你可以改变defalut)

然后,只需在需要它的每个函数调用$this->$order在“秩序”的元素。

+0

谢谢,我知道这种方式。但是这个时候的框架可能性呢? – Ozerich

+0

啊,我的错误(不太熟悉它) – pzirkind

相关问题