Applying default value to relation in yii

I can't find too much documentation on applying the default scope for a model in yii, I was wondering if anyone could explain or point me in the right direction.

Quick version of my question:

Is it possible to add a relation to the default area or add default criteria “c” for each AR search on the model?

Long version of my question:

A brief summary of my application:

I have two models: providerand item. Who has the ratio m: 1, where the provider can have many elements, but each element can have only one provider.

So far I have this relationship:

class Provider extends CActiveRecord
{
    ...
    public function relations()
    {
        return array(
            'items' => array(self::HAS_MANY, 'Item', 'id_provider', 'order'=>'rank DESC'),
        );
    }
    ...
}

class Item extends CActiveRecord
{
    ...
    public function relations()
    {
        return array(
            'provider' => array(self::BELONGS_TO, 'Provider', 'id_provider'),
        );
    }
    ...
}

defaultScope, (.. , offline = false):

public function defaultScope()
{
    $alias = $this->getTableAlias(false,false);
    return array(
        'condition'=>"`$alias`.`offline` = false",
    );
}

, , , (.. , provider.offline = false, item.offline = false).

defaultScope:

public function defaultScope()
{
    $alias = $this->getTableAlias(false,false);
    return array(
        'join'=>"JOIN `provider` AS `provider` ON `provider`.`id` = `$alias`.`id_provider`",
        'condition'=>"`$alias`.`offline` = false AND `provider`.`offline` = false",
    );
}

JOIN ON (CDbCommand failed to execute the SQL statement: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'provider.offline' in 'on clause').

defaultScope:

public function defaultScope()
{
    $alias = $this->getTableAlias(false,false);
    return array(
        'with'=>"provider",
        'condition'=>"`$alias`.`offline` = false AND `provider`.`offline` = false",
    );
}

: SQLSTATE [42S22]: : 1054 "provider.offline" "on" ).

?

+5
2

, :

-, , ( , , )

public function defaultScope()
{
    return array(
        'with'=> array("provider" => array(
            'condition'=> "t.offline = false AND provider.offline = false",
        )
    );
}

-, , :

public function defaultScope()
{
    return array(
        'scopes'=> array('default'),
    );
}

class Provider extends CActiveRecord
{
    ...
    public function scopes()
    {
        ...
    }
    ...
}

class Item extends CActiveRecord
{
    ...
    public function scopes()
    {
        ...
    }
    ...
}
+6

. ( !), , "" "", .

, ( "" ) defaultScope, , SQL ON, "", .

, ( "" ), "" , defaultScope .

, , . WHERE, , null, , .

, , "" :

public function defaultScope()
{
return array(
    'with'=> array("provider" => array(
        'condition'=> "t.offline = false",
        'on'=>"provider.offline = false",
    )
);
}
0

All Articles