Je veux implémenter une sous-requête en utilisant le constructeur de requête mais je ne comprends pas la syntaxe. J'ai affaire à une table d'emplacements qui a des entrées qui peuvent être des villes, des états ou des codes postaux en fonction du type de lieu. Je veux obtenir tous les endroits qui sont dans un certain état et en retirer tout type de ville et avoir une population inférieure à un certain montant.Doctrine 2 sous-requête
$qb->select('l')
->from('Entity\Location', 'l')
->where('l.state = :state')
->setParameter('state', 'UT')
->andWhere('...don't know what to put here');
Dans le etoù je besoin essentiellement dire
et où id pas (select id de l'endroit où location_type = 1 et population < 1000)
Mise à jour: J'ai été capable de le faire avec DQL directement, mais ce serait bien de voir comment le faire en utilisant le constructeur de requête.
$qb->andWhere('l.id NOT IN (SELECT l2.id FROM Entity\Location AS l2 WHERE l2.location_type = 1 AND l2.population < 1000)');
On dirait que je n'ai même pas vraiment besoin d'une sous-requête. Cependant, Guilherme a également suggéré que je peux simplement utiliser une seconde instance de générateur de requêtes et l'utiliser comme deuxième argument d'une expression in. http://groups.google.com/group/doctrine-user/browse_thread/thread/f72c104fe334f87c –