Вопрос

У меня есть две модели и таблица соединений, User, Post и posts_users.

А posts_users таблица содержит несколько дополнительных полей, одно из которых is_active.Я хочу сделать все сообщения пользователей активными, при условии, что пользователь сам активен.

У меня есть следующее

$this->Post->PostsUser->updateAll(array('PostsUser.is_active' => 1), array('PostsUser.user_id' => $data['User']['id'], 'User.is_active' => 1));

Что вызывает ошибку MySQL

Предупреждение (512):Ошибка SQL:1054:Неизвестный столбец «User.is_active» в разделе «where»…

Запрос:ОБНОВЛЯТЬ posts_sites КАК PostsUser НАБОР PostsUser.is_active = 1 ГДЕ PostsUser.user_id = 1 И User.is_active = 1

Как вы можете видеть, таблица User не объединяется в запросе.Есть ли решение этой проблемы?

Это было полезно?

Решение

Вы определили PostsUser модели явно, или вы просто используете неявно сгенерированную модель?

Похоже, что дело в последнем, так что эта модель, вероятно, не вызовет никаких ассоциаций.Вы можете связать их на лету перед вызовом обновления или явно создать файл модели и определить ассоциации.

Т.е.тот Post и User модели связаны друг с другом, но PostsUser model — это просто пустая вспомогательная модель, свисающая с любого из них.Сам по себе он не имеет никаких подключений, поэтому при звонке с PostsUser у него нет определенных ассоциаций.

  Post   <--->   User
    |             |
    v             v
PostsUser     PostsUser
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top