Usuwanie danych z kolekcji ManyToMany w Event Listener

0

Witam, mam klasę Produkt oraz Tag. Te dwie klasy są w relacji ManyToMany. Dla klasy Produkt stworzyłem Event ProduktListener.
Chciałbym żeby po każdej edycji jednego pola np. nazwy produktu, usuwały się wszystkie Tagi powiązane z Produktem. Do tego użyłem w tym Listenerze funkcji preUpdate().

public function preUpdate(Product $object, PreUpdateEventArgs $eventArgs)
{
    if ($eventArgs->hasChangedField('name')) {
    $object->getTags()->clear();
    }
}

Dlaczego wszystkie inne właściwości klasy się zmieniają z każdą edycją nazwy, a nie mogę wyczyscić tablicy z Tagami? Próbowałem różnych sposobów, na przykłąd z ponownym użyciem EntityManagera ale ponowny Flush chyba zapętla ten Event i zapełnia pamięć.
Jak modifukować powiązaną kolekcje obiektów ?

0

Jeżeli czyścisz kolekcję to należy w relacji mieć ustawione orphanRemoval: true
https://www.doctrine-project.org/projects/doctrine-orm/en/2.16/reference/working-with-associations.html#orphan-removal

Jeżeli z jakiegoś powodu nie chcesz/nie możesz ustawić orphanRemoval to musisz za pomocą entityManagera usunąć osobno każdy tag.

1 użytkowników online, w tym zalogowanych: 0, gości: 1