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

これを実行する1つの方法は、$orderという親クラスにプライベートメンバーを追加することです。

そのためのゲッターとセッターを作成する必要があります(必要なときにdefalutを変更できるようにするため)

次に、$this->$orderそれを必要とする各関数の「order」要素を呼び出すだけです。

于 2013-01-01T17:07:52.137 に答える