2011-10-11 2 views
4

User, Project 및 Todo의 세 엔티티가있는 webapp에서 작업하고 있습니다.DQL 쿼리와 연관성?

모든 Todo는 Project와 다 대일 관계를 맺고 있습니다. Todos는 또한 사용자에게 다 대다 관계를 가지고 있습니다.

내가하려는 것은 주어진 사용자에게 할당 된 할 일 목록을 포함하는 프로젝트를 검색하는 것입니다.

내 코드는 다음과 같습니다. 내가 잘못 뭐하는 거지에

[Semantical Error] line 0, col 79 near 'assigned_to =': Error: Invalid PathExpression. StateFieldPathExpression or SingleValuedAssociationField expected.

어떤 생각 : $ ID가 나는 내가 다음과 같은 오류가이 쿼리를 실행할 때마다

$em = $this->getDoctrine()->getEntityManager(); 
$projects = $em->createQuery("SELECT p FROM projects p INNER JOIN p.todos t WITH t.assigned_to = :id") 
    ->setParameter('id', $id) 
    ->getResult(); 

에 대한 프로젝트를 검색 할 USER_ID로 설정되어? 감사.

답변

6

업데이트 다음 assigned_to 관계로

많은 관계로 많은 사람들이 의견에서 지적한은을 비교 한에 대한 실제 필드 assigned_to가없는 것입니다.

) 나도 내가 당신에게서 배운대로도 지원 가능하며 익숙한 오전 작동 할 수 있습니다 이잖아로

SELECT p 
FROM projects p 
INNER JOIN p.todos t 
INNER JOIN t.assigned_to a 
WHERE a.id = :id 

나는 WHERE 조건을 사용하고 있습니다 :

당신은 협회에 가입해야

+0

나는 WITH 절이 지원된다고 확신한다. 이 문서는 [여기] (http://www.doctrine-project.org/docs/orm/2.1/en/reference/dql-doctrine-query-language.html)에 나와있는 교리 예제 중 하나에서 찾을 수 있습니다. 그리고 WITH t.assigned_to = : id "를 외래 키 (예 :'WITH t.description = 'Say hi'"')를 사용하지 않는 조건으로 바꾸면 쿼리가 정상적으로 작동합니다. –

+0

또한 WHERE 절을 사용하여 동일한 문제가 발생했습니다. –

+0

@JamesKirkwood hm ... assigned_to의 매핑은 무엇입니까? 이것은 다중 값 또는 단일 값의 집합입니까? – Max