Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Exclusão do Doctrine QueryBuilder com junções


Pode ser melhor executar uma consulta com a condição IN em vez de iterar.
$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();
  • Benefícios:roda mais rápido, sem necessidade de iteração
  • Desvantagens:você não pode usar preRemove

Quanto ao acalorado debate "onde colocá-lo", ouse colocá-lo no controlador, se quiser. Isso depende totalmente de você. No entanto, pode ser mais útil para você no futuro se você colocar o código na classe de repositório de doutrina dedicada. Deve ser muito fácil de fazer e facilita a mudança/manutenção.