Как удалить удаленную запись из логики arraycollection в Symfony?

В рамках функции 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 существует!

1 ответ

По моему, с этой структурой Document -> Agency -> Market

Создайте новый массив $this->market из агентств в preFlush.

ИЛИ ЖЕ

Создайте метод getMarkets() и возвращайте рынки от агентств, когда вам нужно.

Другие вопросы по тегам