sql >> Databáze >  >> RDS >> Mysql

Doctrine QueryBuilder odstranit pomocí spojení

Může být lepší spouštět dotaz s podmínkou IN než iterovat.

$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();
  • Výhody:běží rychleji, není třeba opakovat
  • Nevýhody:nelze se připojit k preRemove

Pokud jde o vášnivou debatu „kam to dát“, odvažte se to dát do ovladače, pokud chcete. To je zcela na vás. V budoucnu však pro vás může být užitečnější, když kód dostanete do vyhrazené třídy úložiště doktrín. Mělo by to být velmi snadné a mělo by se snadno měnit / udržovat.



  1. Generování vložení sql do pro Oracle

  2. Funkce COSH() v Oracle

  3. MySQL Inner Join Query Multiple Tables

  4. SQLDeveloper nezobrazuje žádné tabulky pod připojeními, kde je uvedeno tabulky