Może być lepiej uruchomić zapytanie z warunkiem IN, niż iterować.
$ids = $this->createQueryBuilder('product')
->join('..your joins..')
->where('..your wheres..')
->select('product.id')
->getQuery()->getResult();
$this->createQueryBuilder('product')
->where('product.id in (:ids)')
->setParameter('ids', $ids)
->delete()
->getQuery()
->execute();
- Korzyści:działa szybciej, nie trzeba powtarzać
- Wady:nie można podłączyć do preRemove
Jeśli chodzi o gorącą debatę "gdzie to umieścić", odważcie się umieścić to w sterowniku, jeśli chcecie. To zależy wyłącznie od Ciebie. Jednak w przyszłości może być bardziej przydatne, jeśli wylądujesz kod w dedykowanej klasie repozytorium doktryn. Powinno to być bardzo łatwe do wykonania i ułatwiać zmianę / konserwację.