Ну как я пытался я уже показал вот я не понимаю в relations нам нужно указывать эти дополнительные поля в ассоциативной таблице? или мы итак сможем к ним обратиться.
Ну если не понятно, то я ожидал увидеть миного messages.text на страничке, у которых поле private в ассоциативной таблице равно 1.
но всё равно не ясно как указать поле private в этом условии.
Просто после выполнения выдаёт ошибку, что поле users.private не найдено. причем, что бы я не писал вместо users например если t.private всё равно не может найти это поле.
Возможно нужно указать что-то в relations в модели?
модель messages:
public function relations()
{
return array(
'users'=>array(self::MANY_MANY,'Users','users_messages(id_messages,id_users)'),
),
}
модель users:
public function relations()
{
return array(
'messages' => array(self::MANY_MANY, 'Messages', 'users_messages(id_users, id_messages)'),
);
}
Как моделям дать понять что там есть поле private в ассоциативной таблице?
А сделаем выстрел наугад, users_messages.private не помогает?
Лучше процитируйте текст ошибки, может быть информация о том где именно не найдено поле "private" натолкнет на мысль.
Вообще в следующей версии вреймворка от отношения MANY_MANY собираются отказаться, как от излишне сложной в понимании. Будем тогда делать два отношения HAS_MANY. Кстати, может быть тебе стоит этим заняться уже сейчас, ведь отношение MANY_MANY подразумевает что между двумя таблицами существует третья, но модели для неё нет. А ты создай модель к таблице связи и связывай свои "messages" и "user_messages" с ней через HAS_MANY это должно помочь.
Oшибка появляется, т.к. таблица users не содержит поля private. Надо либо изменить структуру бд, либо изменить запрос (возможно, используя through). Просмотрите текущий запрос в логах, чтобы иметь более четкое понимание какой sql формируется.
Я впервые вижу ESaveRelatedBehavior. Беглый просмотр его примеров использования не показал что бы можно было использовать конструкцию
$message->users_messages->private = 1;
Подумайте сами, что такое "$message->users_messages" ? Это массив из AR записей. А "->private" это обращение к методу объекта. Т.е. вы пытаетесь обратиться к массиву объекту как к самому объекту.
Вот если в цикле пройтись по всем объектам массива и каждому установить ->private то это сработает.