Left-Joins in Doctrine ausführen
Doctrine bietet umfassende Funktionen zum Erstellen und Ausführen von SQL-Abfragen, einschließlich der Möglichkeit, Left-Joins durchzuführen. In diesem Artikel wird gezeigt, wie Sie mit Doctrine Left-Joins durchführen und dabei die Schwachstellen beheben, auf die Sie möglicherweise in Ihrem Code stoßen.
Left-Join-Syntax
Bei der Verwendung von Assoziationen zwischen Entitäten wird die Die Syntax für Left-Joins ist unkompliziert:
<code class="php">public function getHistory($users) { $qb = $this->entityManager->createQueryBuilder(); $qb ->select('a', 'u') ->from('Credit\Entity\UserCreditHistory', 'a') ->leftJoin('a.user', 'u') ->where('u = :user') ->setParameter('user', $users) ->orderBy('a.created_at', 'DESC'); return $qb->getQuery()->getResult(); }</code>
In diesem Beispiel wird eine Bedingung auf das Join-Ergebnis angewendet, sodass es unerheblich ist, ob ein Left-Join oder einfach ein Join verwendet wird.
Left Join ohne Assoziationen
Wenn keine Assoziationen verfügbar sind, sieht die Left-Join-Abfrage wie folgt aus:
<code class="php">public function getHistory($users) { $qb = $this->entityManager->createQueryBuilder(); $qb ->select('a', 'u') ->from('Credit\Entity\UserCreditHistory', 'a') ->leftJoin( 'User\Entity\User', 'u', \Doctrine\ORM\Query\Expr\Join::WITH, 'a.user = u.id' ) ->where('u = :user') ->setParameter('user', $users) ->orderBy('a.created_at', 'DESC'); return $qb->getQuery()->getResult(); }</code>
Diese Abfrage führt zu einem Array ähnlich dem folgenden:
<code class="php">array( array( 0 => UserCreditHistory instance, 1 => Userinstance, ), array( 0 => UserCreditHistory instance, 1 => Userinstance, ), // ... )</code>
Das obige ist der detaillierte Inhalt vonSo führen Sie Left Joins in Doctrine durch: Eine Anleitung mit Codebeispielen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!