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.

如何设置模型的默认顺序?

4

2 回答 2

8

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

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

这将为模型上的所有查找方法添加。阅读范围defaultScopes以获取更多信息

于 2013-01-01T17:20:02.477 回答
0

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

您需要为其创建 getter 和 setter(以便您可以在需要时更改默认值)

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

于 2013-01-01T17:07:52.137 回答