В функции preFlush в моем объекте у меня есть следующий код
$markets = $this->getMarkets();
if(count($this->getAgencies()) > 0){
foreach($this->getAgencies() as $agency) {
if(!$this->markets->contains($agency->getMarket())) {
$this->addMarket($agency->getMarket());
}
}
}
так что в основном то, что я делаю, я создаю документы, которые назначаются агентствам, и эти агентства принадлежат к разным рынкам. Так как агентств больше, чем рынков, и я не хочу дублировать рынки, я реализовал условие if. Теперь добавление работает отлично. Но когда я хочу отредактировать свой документ и, например, удалить агентство, скажем, из США (= рынок), и нет другого агентства из США, назначенного документу, я хочу, чтобы США было полностью удалено из этого документа. Я застрял с логикой позади этого.
Таким образом, если удаляемое агентство/рынок не содержится в оставшихся рынках, оно должно быть удалено, но если осталось еще одно агентство с этого рынка, рынок (конечно) не должен быть удален.
Рынки и агентства являются ArrayCollections в моем объекте документа, поэтому функция removeMarket существует!