(ссылка на предыдущий вопрос на всякий случай: Борьба с отношением один-ко-многим в форме администратора )
У меня такое отношение ко многим в моем Symfony-1.3 / Проект Propel-1.4 между Пользователь и Партнер .Когда пользователь сохраняется, если он имеет определенный логический флаг, являющийся истинным, я хочу очистить все ссылки на партнеров.Вот что я делаю в данный момент, и это не работает:
// inside the User model class
public function save(PropelPDO $con = null) {
if ($this->getIsBlaBla()) {
$this->setStringProperty(NULL);
$this->clearUserPartners();
}
parent::save($con);
}
Установка свойства строки в NULL работает;глядя на БД это наглядно показывает.Однако дело в том, что таблица USER_PARTNER по-прежнему содержит отношения между пользователями и партнерами.Поэтому я решил очистить ссылки одну за другой, например:
foreach($this->getUserPartners() as $user_partner) {
$user_partner->delete();
//UserPartnerPeer::doDelete($user_partner); // tried that too
}
И то, и другое не помогает.
Как я уже говорил в моем предыдущем вопросе, я простоSymfony изучает обезьяну методом проб и ошибок, поэтому я, очевидно, упускаю что-то очень очевидное.Пожалуйста, укажите мне правильное направление!
РЕДАКТИРОВАТЬ: Вот как я сделал это работает:
Переместил код в класс Form, например, так:
public function doSave(PropelPDO $con = null) {
parent::doSave($con);
if ($this->getObject()->getIsSiteOwner()) {
$this->getObject()->setType(NULL);
$this->getObject()->save();
foreach($this->getObject()->getUserPartners() as $user_partner) {
$user_partner->delete();
}
}
return $this->getObject();
}
public function updateObject($values = null) {
$obj = parent::updateObject($values);
if ($obj->getIsSiteOwner()) {
$obj->clearUserPartners();
}
return $this->object;
}
Что это делает:
- Когда установлен логический флаг `is_site_owner`, он очищает поле` type` и ** сохраняет ** объект (стыдно, что у меня нетпонял это так долго).
- Удаляет все существующие объекты ссылок «многие ко многим» для UserPartner.
- Удаляет вновь связанные (через DoubleList) отношения UserPartner.1035 * Что мне и нужно.Спасибо всем, кто участвовал.