복잡한 데이터 모델로 작업할 때 여러 테이블 간의 관계를 설정하여 여러 테이블에서 데이터를 검색해야 합니다. Left 조인을 사용하면 한 테이블에서 모든 행을 가져오고 다른 테이블에서는 일치하는 행만 가져올 수 있습니다.
Doctrine에서 Left 조인을 시도할 때 발생할 수 있는 일반적인 오류는 수신입니다. 다음 구문 오류:
[Syntax Error] line 0, col 98: Error: Expected DoctrineORMQueryLexer::T_WITH, got 'ON'
이 오류는 "ON"이 사용된 경우 발생합니다. "WITH" 대신 조인 절을 사용하세요. 이 문제를 해결하려면 아래와 같이 "ON"을 "WITH"로 바꾸십시오.
<code class="php">$qb->leftJoin('User\Entity\User', 'u', \Doctrine\ORM\Query\Expr\Join::WITH, 'a.user = u.id')</code>
Doctrine에서 왼쪽 조인을 수행하려면 두 가지 접근 방식이 있습니다.
연결 포함:
엔티티가 조인하려는 테이블과 연결되어 있는 경우 다음 구문을 사용할 수 있습니다.
<code class="php">$qb ->select('a', 'u') ->from('Credit\Entity\UserCreditHistory', 'a') ->leftJoin('a.user', 'u') ->where('u = :user') ->setParameter('user', $users) ->orderBy('a.created_at', 'DESC');</code>
In 이 경우 "CreditEntityUserCreditHistory#user"는 두 엔터티 간의 연결을 나타냅니다.
연결 없음:
연결이 없으면 다음 구문을 사용할 수 있습니다.
<code class="php">$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');</code>
이 쿼리는 두 테이블 모두에서 레코드를 검색하고 다음 형식의 배열이 포함된 결과 집합을 반환합니다.
<code class="php">array( array( 0 => UserCreditHistory instance, 1 => Userinstance, ), array( 0 => UserCreditHistory instance, 1 => Userinstance, ), // ... )</code>
위 내용은 Doctrine에서 왼쪽 조인 중에 \'Expected Doctrine\\ORM\\Query\\Lexer::T_WITH, got \'ON\'\' 오류를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!