sql >> Databasteknik >  >> RDS >> Mysql

Doctrine QueryBuilder radering med joins

Det kan vara bättre att köra en fråga med IN-villkor snarare än att iterera.

$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();
  • Fördelar:går snabbare, du behöver inte upprepa
  • Nackdelar:du kan inte ansluta till preRemove

När det gäller hetsiga "var ska man lägga den"-debatten, våga lägga den i kontrollern om du vill. Det är helt upp till dig. Det kan dock vara mer användbart för dig i framtiden om du landar koden i den dedikerade doktrinförvaret. Det ska vara väldigt enkelt att göra och göra det enkelt att ändra/underhålla.



  1. Hur underhåller jag PHP-sessioner över flera domäner på samma server?

  2. Hur man hittar en användares standardspråk i SQL Server (T-SQL)

  3. Hur man använder "Gilla" i SQL

  4. Oracle (11.2.0.1):Hur man identifierar raden som för närvarande uppdateras av UPDATE-satsen