在 Doctrine 中執行左連接
Doctrine 提供了創建和執行 SQL 查詢的全面功能,包括執行左連接的功能。本文示範如何使用 Doctrine 執行左連接,解決您在程式碼中可能遇到的痛點。
左連接語法
在利用實體之間的關聯時,左連接的語法很簡單:
<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>
在此範例中,條件應用於連接結果,因此無論使用左連接還是簡單連接都無關緊要。
沒有關聯的左連接
如果沒有可用的關聯,則左連接查詢類似於以下內容:
<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>
此查詢會產生類似以下內容的陣列:
<code class="php">array( array( 0 => UserCreditHistory instance, 1 => Userinstance, ), array( 0 => UserCreditHistory instance, 1 => Userinstance, ), // ... )</code>
以上是如何在 Doctrine 中執行左連接:帶有程式碼範例的指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!