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 中国語 Web サイトの他の関連記事を参照してください。