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

Doctrine QueryBuilder sletning med joinforbindelser

Det kan være bedre at køre en forespørgsel med IN-tilstand frem for at iterere.

$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();
  • Fordele:kører hurtigere, ingen grund til at gentage
  • Ulemper:du kan ikke tilslutte dig preRemove

Med hensyn til ophedet "hvor skal man sætte det"-debat, så tør at sætte det i controlleren, hvis du vil. Det er helt op til dig. Det kan dog være mere nyttigt for dig i fremtiden, hvis du lander koden i den dedikerede doktrinopbevaringsklasse. Det skal være meget nemt at gøre og gøre det nemt at ændre/vedligeholde.



  1. Er der nogle muligheder for et tilslutningsbord for mange-til-mange foreninger?

  2. MySQL-fejl ved forsøg på at afkorte tabel

  3. Sådan ændres sproget for din Oracle-session

  4. Skjult funktion:Træk og slip adgangsobjekter mellem filer