sql >> Database >  >> RDS >> Mysql

Doctrine QueryBuilder verwijderen met joins

Het is misschien beter om een ​​query uit te voeren met de IN-voorwaarde in plaats van te herhalen.

$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();
  • Voordelen:werkt sneller, herhalen is niet nodig
  • Nadelen:je kunt niet inhaken op preRemove

Wat betreft het verhitte "waar het te plaatsen" debat, durf het in de controller te plaatsen als je wilt. Dat is helemaal aan jou. In de toekomst kan het echter nuttiger voor u zijn als u de code in de speciale leerboekklas plaatst. Het moet heel gemakkelijk te doen zijn en het is gemakkelijk te wijzigen / te onderhouden.



  1. Hoe het schema van een object (tabel, weergave, opgeslagen procedure) in SQL Server-database te wijzigen - SQL Server / TSQL-zelfstudie, deel 28

  2. Hoe voorkom je reparatie met Keycache?

  3. mysql SQL:specifiek item om eerst te zijn en dan om de rest van de items te sorteren

  4. Oracle SQL Developer 21.4.2 en SQLcl 21.4.1 zijn nu beschikbaar