Состояние модельных отношений

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

Я предполагаю, что понимаю теорию - и я реализовал этот подвиг. в прошлом после некоторых неприятностей. Я нигде не читал документы, так как этот конкретный вопрос плохо документирован из-за его простоты.

Предположим, многоязычный сайт с 3 таблицами, например. Общий [1]-[п] Перевод [п]-[1] Язык.

Более конкретный пример - представьте систему статей. Shared содержит используемые данные, которые не зависят от языка (дата / время опубликованы, ссылки на изображения и т. Д.) - Translated (фактическая статья, на одном языке) - Language (хранит ссылки на разные языки)

Я могу получить текущее состояние языка из URL, используя $_GET['language'];

Я хочу, чтобы сайт игнорировал все данные на других языках, кроме текущего выбранного языка. Что я конкретно не хочу делать, так это метод, который я сейчас использую, добавляя условия в CDbCriteria для поиска или в CActiveDataprovided для индекса.

Я хочу указать один раз, хорошо, один раз для каждой модели, в простом правиле, игнорировать все на разных других языках.

Теперь, в прошлом я был в состоянии указать это в функции отношений соответствующих моделей. В основном я хочу, чтобы что-то вроде этого работало:

class ArticleData extends CActiveRecord{
...
    public function rules()
{
    // NOTE: you should only define rules for those attributes that
    // will receive user inputs.
    return array(
        array('title, data', 'required'),
        array('language, source', 'length', 'max'=>10),
        // The following rule is used by search().
        // Please remove those attributes that should not be searched.
        array('id, title, data, language, source', 'safe', 'on'=>'search'),
    );
}
enter code here
    public function relations()
{
    // NOTE: you may need to adjust the relation name and the related
    // class name for the relations automatically generated below.
    return array(
        'article' => array(self::HAS_ONE, 'Article', 'source'),
        'articlelanguage' => array(self::HAS_ONE, 'Language', 'code','condition' =>  'articlelanguage.code ='. $_GET['language']),
    );
}

а также

class Language extends CActiveRecord{
...
    public function rules()
{
    // NOTE: you should only define rules for those attributes that
    // will receive user inputs.
    return array(
        array('code', 'length', 'max'=>10),
        array('language', 'length', 'max'=>100),
        // The following rule is used by search().
        // Please remove those attributes that should not be searched.
        array('code, language', 'safe', 'on'=>'search'),
    );
}

...
public function relations()
{
    // NOTE: you may need to adjust the relation name and the related
    // class name for the relations automatically generated below.
    return array(
        'articledata' => array(self::HAS_MANY, 'ArticleData', 'language'),

    );
}

Итак, вопрос двоякий - что касается последней строки в отношениях первых моделей:

 'articlelanguage' => array(self::HAS_ONE, 'Language', 'code','condition' =>  'articlelanguage.code ='. $_GET['language']),

1) Будет ли эта линия выполнить то, что я хочу?

2) Если да, что я делаю не так

0 ответов

Другие вопросы по тегам