Có thể tốt hơn nếu chạy một truy vấn với điều kiện IN hơn là lặp lại.
$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();
- Lợi ích:chạy nhanh hơn, không cần lặp lại
- Hạn chế:bạn không thể tham gia preRemove
Như để tranh luận sôi nổi "đặt nó ở đâu", hãy dám đưa nó vào bộ điều khiển nếu bạn thích. Điều đó hoàn toàn tùy thuộc vào bạn. Tuy nhiên, nó có thể hữu ích hơn cho bạn trong tương lai nếu bạn đặt mã trong lớp kho lưu trữ học thuyết chuyên dụng. Nó sẽ rất dễ thực hiện và dễ dàng thay đổi / bảo trì.