2010-06-26 3 views
0

에서 교리 관계를 가져옵니다 : 내가하고 싶은 무엇나는 세 개의 테이블이 DQL

Project: 
    ... 
    relations: 
    User: 
     local: authorId 
     foreign: id 
    Users: 
     class: User 
     local: projectId 
     foreign: userId 
     refClass: UserProjects 

User: 
    ... 
    relations: 
    Projects: 
     class: Project 
     local: userId 
     foreign: projectId 
     refClass: UserProjects 

UserProjects: 
    columns: 
     id: 
     type: integer 
     primary: true 
     autoincrement: true 
     userId: integer 
     projectId: integer 

는 사용자에 관련된 프로젝트를 반환하는 DQL 문을 쓰기입니다. 나는 다음과 같은 모방하려고 해요 :

SELECT p.* 
FROM user_projects AS up 
LEFT JOIN project AS p ON up.projectid = p.id 
LEFT JOIN user AS u ON up.userid = u.id 
WHERE u.id = 1 

교리 지침을 읽고 난 다음에 와서 (유를이 유 SELECT 문에 사용되지 않는 불평 때문에 *에있다.) :

그러나 반환하는 것은 'Projects'속성이 연관된 프로젝트로 채워진 단일 Model_User 객체를 포함하는 데이터 세트입니다. 가능한 경우 프로젝트를 반환하고 싶습니다.하지만이를 파악할 수는 없습니다. 가능한가?

답변

0

나는 내 관계가 잘못되었습니다. 다음을 수행해야했고 Doctrine이 DQL을 사용하지 않고도 자동으로 올바른 관계를 구축 할 수있었습니다 ($ user-> UserProjects 또는 $ project-> UserProjects가 될 수있었습니다)

Project: 
    columns: 
    id: 
     type: integer 
     primary: true 
     autoincrement: true 
    ... 
    authorId: integer 
    ... 
    relations: 
    User: 
     local: authorId 
     foreign: id 
    Users: 
     foreignAlias: Projects 
     class: User 
     refClass: UserProjects 

User: 
    columns: 
    id: 
     type: integer 
     primary: true 
     autoincrement: true 
    ... 

UserProjects: 
    columns: 
     id: 
     type: integer 
     primary: true 
     autoincrement: true 
     user_id: integer 
     project_id: integer 
    relations: 
    Project: 
     foreignAlias: UserProjects 
    User: 
     foreignAlias: UserProjects