2017-03-07 9 views
1

Ich mag eine subselect tun, um die folgende postgresql Abfrage mit dem Querybuilder zu tun:Wie benutze ich den Querybuilder um einen Subselect zu erstellen?

SELECT i.* FROM internship i 
WHERE EXISTS (SELECT iw.* 
       FROM internship_weeks iw 
       WHERE i.id = iw.internship) 

Hat jemand eine Idee hat, wie man das gleiche Ergebnis mit Querybuilder bekommen? oder vielleicht mit DQL?

Danke für die Hilfe!

Antwort

1

Als Beispiel zeigen nur für HOW-TO eine Unterabfrage select-Anweisung in einer select-Anweisung zu verwenden, nehmen wir an, was alle Benutzer zu finden, die noch nicht kompilieren die Adresse (keine Datensätze vorhanden in der Adresstabelle):

// get an ExpressionBuilder instance, so that you 
$expr = $this->_em->getExpressionBuilder(); 

// create a subquery 
$sub = $this->_em->createQueryBuilder() 
    ->select('iw') 
    ->from(IntershipWeek::class, 'iw') 
    ->where('i.id = iw.intership'); 


$qb = $this->_em->createQueryBuilder() 
    ->select('i') 
    ->from(Intership::class, 'u') 
    ->where($expr->exists($sub->getDQL())); 

return $qb->getQuery()->getResult(); 

Hoffe diese Hilfe

Verwandte Themen