首頁  >  文章  >  後端開發  >  如何在 Doctrine 中執行左連接:帶有程式碼範例的指南

如何在 Doctrine 中執行左連接:帶有程式碼範例的指南

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-30 05:02:02348瀏覽

How to Perform Left Joins in Doctrine: A Guide with Code Examples

在 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn