Symfony 2: 교리 쿼리 작성기가 있는 관련 없는 테이블의 내부 조인
저는 다음과 같이 연관되지 않은 테이블에 합류하는 교리 쿼리 작성기를 사용하여 쿼리를 구축하려고 합니다.
$query = $this->createQueryBuilder('gpr')
->select('gpr, p')
->innerJoin('TPost', 'p')
->where('gpr.contentId = p.contentId')
근데 이게 안 돼요.여전히 오류가 발생합니다.
오류: 가입 경로 식을 사용했지만 이전에 정의되지 않은 식별 변수 Tpost입니다.
이 오류 메시지를 검색해보니 모두 p.some Attribute처럼 table alias + attribute를 사용하라고 답했습니다.하지만 가입하고 싶은 테이블은 선택한 테이블과 관련이 없습니다.
일반적인 mysql 쿼리로서 나는 다음과 같이 쓸 것입니다.
SELECT * FROM t_group_publication_rel gpr
INNER JOIN t_post p
WHERE gpr.content_id = p.content_id
제가 뭘 잘못하고 있는지 아시겠어요?
오늘 저는 비슷한 작업을 하다가 이 문제를 열었다는 것을 기억했습니다.어떤 독트린 버전에서 작동하는지는 모르겠지만 지금은 상속 매핑에서 자식 클래스에 쉽게 참여할 수 있습니다.따라서 이와 같은 쿼리는 아무런 문제 없이 작동합니다.
$query = $this->createQueryBuilder('c')
->select('c')
->leftJoin('MyBundleName:ChildOne', 'co', 'WITH', 'co.id = c.id')
->leftJoin('MyBundleName:ChildTwo', 'ct', 'WITH', 'ct.id = c.id')
->orderBy('c.createdAt', 'DESC')
->where('co.group = :group OR ct.group = :group')
->setParameter('group', $group)
->setMaxResults(20);
상속 매핑을 사용하는 부모 클래스에서 쿼리를 시작합니다.이전 게시물에서는 출발점이 달랐지만 제 기억이 맞다면 같은 문제였습니다.
제가 이 문제를 시작할 때 큰 문제였기 때문에 모르는 사람들에게도 흥미로울 수 있다고 생각합니다.
연결되지 않은 엔티티 사이의 조인은 버전 2.4까지 할 수 없었습니다. 여기서 다음 구문으로 임의 조인을 생성할 수 있습니다.
$query = $em->createQuery('SELECT u FROM User u JOIN Blacklist b WITH u.email = b.email');
참조 : http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/dql-doctrine-query-language.html
$dql = "SELECT
a, md.fisrtName , md.LastName, mj
FROM MembersBundle:Memberdata md
INNER JOIN MembersBundle:Address a WITH md = a.empID
INNER JOIN MembersBundle:Memberjob mj WITH md = mj.memberData
...
WHERE
a.dateOfChange IS NULL
AND WHERE
md.someField = 'SomeValue'";
return $em->createQuery( $dql )->getResult();
DQL 조인은 연결이 매핑에 정의된 경우에만 작동합니다.사용자의 경우 기본 쿼리를 수행하고 ResultSetMapping을 사용하여 개체를 채우는 것이 훨씬 쉽다고 생각합니다.
언급URL : https://stackoverflow.com/questions/11116428/symfony-2-inner-join-on-non-related-table-with-doctrine-query-builder
'programing' 카테고리의 다른 글
MariaDB - 온라인 이동/보관 테이블 (0) | 2023.10.17 |
---|---|
Oracle에서 저장 프로시저를 팀 단위로 작업할 수 있는 툴? (0) | 2023.10.17 |
MariaDB Galera Cluster의 비동기 복제 (0) | 2023.10.17 |
bin 로그 디렉터리를 변경하려고 합니다. mysql-bin.index를 찾을 수 없습니다(Errcode: 13). (0) | 2023.10.17 |
Jquery AJAX를 사용하여 MVC Action을 호출한 후 MVC에서 양식을 제출하는 방법은 무엇입니까? (0) | 2023.10.17 |