CakePHP hasAndBelongsToMany (HABTM) Удалить запись о присоединении - PullRequest
4 голосов
/ 15 мая 2010

У меня есть отношения HABTM между пользователями и местоположениями. Обе модели имеют соответствующий набор переменных $hasAndBelongsToMany.

При управлении местоположениями пользователей я хочу удалить связь между пользователем и местоположением, но не местоположение. Очевидно, что это место может принадлежать другим пользователям. Я ожидал бы, что следующий код удалит только запись таблицы присоединения при условии связей HABTM, но он удалил обе записи.

$this->Weather->deleteAll(array('Weather.id' => $this->data['weather_ids'], false);

Однако я новичок в CakePHP, поэтому я уверен, что что-то упустил. Я попытался установить каскад на false и изменить порядок моделей с помощью Пользователь, Пользователь-> Погода, Погода-> Пользователь. Не повезло.

Заранее спасибо за любую помощь.

1 Ответ

7 голосов
/ 15 мая 2010

Не совсем уверен, как Weather относится к вашим моделям, поэтому я просто воспользуюсь традиционными именами, LocationsUser - это таблица присоединения.Это должно удалить все ассоциации между пользователем с идентификатором $id и любым местоположением:

$this->User->LocationsUser->deleteAll(array('LocationsUser.user_id' => $id), false);

Также обратите внимание, что в вашем фрагменте кода отсутствует закрывающая скобка.

...