Potrebbe essere meglio eseguire una query con la condizione IN piuttosto che iterare.
$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();
- Vantaggi:funziona più velocemente, non è necessario ripetere
- Svantaggi:non puoi agganciarti al pre-rimozione
Per quanto riguarda l'acceso dibattito sul "dove metterlo", osa inserirlo nel controller, se lo desideri. Dipende completamente da te. Tuttavia, potrebbe esserti più utile in futuro se atterri il codice nella classe dedicata del repository di dottrine. Dovrebbe essere molto facile da fare e semplificare la modifica/manutenzione.