Mysql
 sql >> Database >  >> RDS >> Mysql

Doctrine QueryBuilder elimina con i join

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.