> 백엔드 개발 > PHP 튜토리얼 > Doctrine에서 왼쪽 조인 중에 \'Expected Doctrine\\ORM\\Query\\Lexer::T_WITH, got \'ON\'\' 오류를 해결하는 방법은 무엇입니까?

Doctrine에서 왼쪽 조인 중에 \'Expected Doctrine\\ORM\\Query\\Lexer::T_WITH, got \'ON\'\' 오류를 해결하는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2024-10-29 04:24:02
원래의
584명이 탐색했습니다.

How to Resolve the

교리에서 Left Join을 수행하는 방법

복잡한 데이터 모델로 작업할 때 여러 테이블 간의 관계를 설정하여 여러 테이블에서 데이터를 검색해야 합니다. 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿