복잡한 데이터 모델로 작업할 때 여러 테이블 간의 관계를 설정하여 여러 테이블에서 데이터를 검색해야 합니다. 왼쪽 조인을 사용하면 한 테이블에서 모든 행을 가져오고 다른 테이블에서는 일치하는 행만 가져올 수 있습니다.
Doctrine에서 왼쪽 조인을 시도할 때 발생할 수 있는 일반적인 오류가 수신됩니다. 다음 구문 오류:
[구문 오류] line 0, col 98: Error: Expected Doctrine\ORM\Query\Lexer::T_WITH, got 'ON'
이 오류는 " ON'은 조인 절에 'WITH' 대신 사용됩니다. 이 문제를 해결하려면 아래와 같이 "ON"을 "WITH"로 바꾸십시오.
$qb->leftJoin('User\Entity\User', 'u', \Doctrine\ORM\Query\Expr\Join::WITH, 'a.user = u.id')
Doctrine에서 왼쪽 조인을 수행하려면 다음 두 가지 접근 방식이 있습니다.
연결 포함:
엔티티가 조인하려는 테이블과 연결되어 있는 경우 다음 구문을 사용할 수 있습니다.
$qb
->select('a', 'u')
->from('Credit\Entity\UserCreditHistory', 'a')
->leftJoin('a.user', 'u')
->where('u = :user')
->setParameter('user', $users)
->orderBy('a.created_at', 'DESC');
이 경우 "Credit\Entity\UserCreditHistory#user"는 두 엔터티 간의 연결을 나타냅니다.
연결 없음:
연결이 없으면 다음 구문을 사용할 수 있습니다.
$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');
이 쿼리는 두 테이블 모두에서 레코드를 검색하고 다음 형식의 배열이 포함된 결과 세트를 반환합니다.
array(
array(
0 => UserCreditHistory instance,
1 => Userinstance,
),
array(
0 => UserCreditHistory instance,
1 => Userinstance,
),
// ...
)
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3