programing

좌 조인 ON 조건 및 기타 조건 구문을 사용하여 독트린에서

css3 2023. 9. 17. 13:24

좌 조인 ON 조건 및 기타 조건 구문을 사용하여 독트린에서

저는 Symfony2에서 Dogrine의 쿼리 빌더를 사용하여 개체를 가져올 쿼리를 만들고 있습니다.

현재 코드는 다음과 같습니다.

$repository = $this->getDoctrine()->getRepository('AaaBundle:Application');

    $queryBuilder = $repository->createQueryBuilder('a');
    $queryBuilder
        ->addSelect('u')
        ->addSelect('i')
        ->orderBy('a.created_date', 'DESC')
        ->leftJoin('a.created_by', 'u')
        ->leftJoin('a.installations', 'i')
        //->where('i.page = :page')
        //->setParameter('page', $found)
        ;

이제 설치 여부에 관계없이 이를 사용하여 모든 페이지를 얻을 수 있습니다.하지만 저는 단지 그들과 함께 하고 싶습니다.$found페이지를 사용할 수 있습니다(앱에 대한 설치가 있지만 다른 페이지에 있는 경우 설치가 가입되지 않습니다).where 절을 인용하지 않으면 페이지에 대한 설치가 있는 앱만 표시됩니다.페이지 설치 유무와 상관없이 모든 앱을 원합니다.

SQL에서 다음을 추가하면 얻을 수 있습니다.AND합세하여

LEFT JOIN installations i ON a.id = i.app AND i.page = :page

이렇게 하면 페이지에 설치되어 있는 앱의 설치 정보를 얻지만 다른 페이지에 설치되어 있거나 아예 없는 앱의 열에는 null 값이 표시됩니다.

독트린에서 이것을 할 수 있는 방법이 있습니까? 아니면 각 응용 프로그램에 대한 모든 설치를 받은 다음 발견된 페이지를 php로 확인하는 것이 더 나을까요?

다음을 시도해 볼 수 있습니다.

use Doctrine\ORM\Query\Expr;

->leftJoin('a.installations', 'i', Expr\Join::WITH, 'i.page = :page')
->setParameter('page', $page)

문서에서 기능 leftJoin 참조: http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/query-builder.html#high-level-api-methods

언급URL : https://stackoverflow.com/questions/19185587/left-join-on-condition-and-other-condition-syntax-in-doctrine