Yii - использование отношений с областями, определенными в отношении

У меня есть модель с некоторыми отношениями, определенными следующим образом.

public function relations()
{
    return array(
        'linkingTable' => array(self::HAS_MANY, 'LinkingTable', array('this_id'=>'id'), 'scopes'=>array('valid')),
        'linkedItems' => array(self::HAS_MANY, 'LinkedItem', array('linked_item_id'=>'id'), 'through'=>'linkingTable', 'scopes'=>array('valid')),
    );
}

И таблица ссылок, и связанные элементы имеют действительную область видимости:

public function scopes() {
    return array(
        'valid'=>array(
            'condition'=>"t.`valid`=1",
        ),
    );
}

Чтобы сгенерированные запросы соединения работали с областью отношений, мне пришлось изменить области следующим образом:

public function scopes() {
    return array(
        'valid'=>array(
            'condition'=>"`linkingTable`.`valid`=1",
        ),
    );
}

а также:

public function scopes() {
    return array(
        'valid'=>array(
            'condition'=>"`linkedItems`.`valid`=1",
        ),
    );
}

Проблема в том, что эти области не будут работать при непосредственном использовании из связанной модели, т.е.

$linkedItems = LinkedItem::model()->valid()->findAll();

Приводит к ошибке, чтобы сказать, чтоlinkedItems не является определенным псевдонимом. Что понятно, конечно. Это также приводит к необходимости в любой другой модели, которая хочет иметь некоторые LinkedItems, которым необходимо точно определить отношение.

Это единственное решение для определения разных областей применения для каждого варианта использования, например:

public function scopes() {
    return array(
        'valid'=>array(
            'condition'=>"t.`valid`=1",
        ),
        'validForModelRelation'=>array(
            'condition'=>"`linkedItems`.`valid`=1",
        )
    );
}

Это чувствует себя немного грязным. Мне интересно, есть ли лучший способ сделать это?

Ответы на вопрос(2)

Ваш ответ на вопрос