Обновление всего и HABTM в CakePHP - PullRequest
2 голосов
/ 05 августа 2009

У меня есть две модели и таблица соединений, 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 AS PostsUser SET PostsUser. is_active = 1 ГДЕ PostsUser. user_id = 1 И User. is_active = 1

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

1 Ответ

2 голосов
/ 05 августа 2009

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

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

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

  Post   <--->   User
    |             |
    v             v
PostsUser     PostsUser
...