Може да е по-добре да стартирате заявка с условие IN, вместо да повтаряте.
$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();
- Предимства:работи по-бързо, няма нужда от повторение
- Недостатъци:не можете да се свържете с preRemove
Що се отнася до бурния дебат "къде да го сложа", осмелете се да го сложите в контролера, ако желаете. Това зависи изцяло от вас. Въпреки това, може да ви бъде по-полезно в бъдеще, ако поставите кода в специалното хранилище за доктрини. Трябва да е много лесно за изпълнение и да го прави лесен за промяна/поддръжка.