이 기사에서는 PHP용 강력한 개체 관계형 매퍼(ORM)인 Doctrine ORM에서 왼쪽 조인을 실행하는 문제를 다룹니다. 개발자가 신용 기록과 함께 사용자의 현재 신용을 표시하려고 시도할 때 문제가 발생합니다.
제공된 코드 조각은 다음을 포함하여 사용자의 기록을 검색하는 getHistory 함수를 생성하려는 시도를 보여줍니다. 현재 신용 및 신용 기록. 그러나 LEFT JOIN 문을 사용할 때 구문 오류가 발생합니다.
오류를 해결하려면 Doctrine에서 Left 조인을 수행하는 구문을 조정해야 합니다. 엔터티 간에 연결이 존재하는지 여부에 따라 두 가지 주요 접근 방식이 있습니다.
접근 방법 1: 연결 사용
UserCreditHistory에서 User로 연결이 가능한 경우 다음과 같습니다. 다음 구문을 사용할 수 있습니다.
<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>
이 시나리오에서 LEFT JOIN과 JOIN은 조인된 결과에 조건이 적용되므로 동일한 결과를 생성합니다.
접근 방식 2: 연결 없음
UserCreditHistory에서 User로의 연결이 없으면 구문이 약간 다릅니다.
<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>
이렇게 하면 UserCreditHistory와 User 인스턴스가 모두 포함된 결과 집합이 생성됩니다.
위 내용은 현재 신용 및 신용 기록을 포함하여 사용자의 기록을 검색해야 할 때 Doctrine ORM에서 왼쪽 조인을 어떻게 수행합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!