: 유용 경우
$q = Doctrine_Query::create()
->select('r.name AS regionname', 's.name AS statename')
->from('job j')
->leftJoin('community c ON c.id = j.community_id')
->leftJoin('state s ON s.id = c.state_id')
->leftJoin('region r ON r.id = s.region_id')
->where('r.id = 1')
->execute();
여기, 내 DB 구조입니다 잘. Doctrine 1.2에서 조인을하는 것은 mysql과 조금 다르다. 참여를하려면 Doctrine이 귀하의 경우 각 구성 요소에 작업 클래스를 작성하는 관계를 활용해야합니다.
내가 말하는 이러한 관계에 대한 작업의 기본 클래스를 확인할 수 있습니다. 설정 방법, 그들은 작업 테이블의 사회 외래 키가 id 예를 들어 다음과 같이 : 할, 당신의 질문으로 돌아 가기
$this->hasOne('community as Communitys', array(
'local' => 'community_id',
'foreign' => 'id'));
있는 A 테이블의 별칭을 참조 할 필요 가입 어디 외국를 키가 속해 있습니다.
->leftJoin('j.Community')
대신
community c ON c.id = j.community_id
공지 사항
의 I 교리 1.2에서 이미 암시되어 그 때문에 ID에 가입 말하지 않았다 : 예를 들어, 당신은 별명 커뮤니티와 커뮤니티 테이블에 가입하려는 경우 . 그러나 다른 것을 선택하여 참여할 수 있습니다.
은 마찬가지로 테이블의 경우 이전에 명시된대로 구성 요소 2.reference 현재 queryand 에서 자신의 별명 1. 한
해야 할 그들이 외래 키가 다른 테이블에 가입해야하는 가입 한 그들의 기본 클래스도.
그래서 당신은 당신이 현재 쿼리의 상태로 나는 당신이 패턴을 볼 수 있기를 바랍니다 당신이 여기에서
// join job and community first
->from('job j')
->leftJoin('j.Community c')
// join community to state since they are the ones that are related
->leftjoin('c.States s')
입니다해야 할 방법을 커뮤니티에 가입 할 것이라고 말했다.
SQL 구문 :
LEFT JOIN
community c ON c.id = j.community_id
DQL 구문 :
가입의 생각은 여전히 원시 SQL과 같은 당신이 그것을 보면 하루의 끝에서, 유일한 차이점은 구문입니다
->leftJoin('j.Community c')
어쨌든 여기에, 귀하의 질문에 대답 (가) 어느 정도 수행해야 가입하는 방법입니다하기 : 자세한 답변
$q = Doctrine_Query::create()
->select('*')
->from('job j')
->leftJoin('j.Community c')
->leftJoin('c.State s')
->leftJoin('s.Region r')
->where('r.id = 1')
->execute();
감사합니다. 불행히도 작동하지 않습니다. 나도 외국의 별명을 알기 위해 노력했다. 그러나 그것들에 매달렸다. 내가 사용하려고 할 때 발생하는 오류입니다. "알 수없는 관계 별칭 커뮤니티"그리고 그 중 하나를 시도 할 때마다 이러한 오류가 발생합니다. 나는 그들이 설치 방법과 재 게시에 무엇인지 확인해 볼 것입니다. 다시 한번 감사드립니다. – Patrick
... 그게 문제인 것처럼 보입니다. 'Community as Community'문은 없으며 'Community, array ('.내 스키마가 외국 별칭으로 명시되어 있기 때문에 어느 정도 당황 스럽습니다. 그러나 내 스키마는 그것을 일대일 관계로 식별하지 않습니다. 그게 문제 야? – Patrick
업데이트 : "as"절을 포함하도록 기본 클래스를 변경했습니다 (이 형식이 나쁜 것으로 알고 있으며 궁극적으로 문제를 수정하면 스키마에서 변경됩니다). "커뮤니티"관계에 대한 문제가 수정되었습니다. 그러나 이제는 "States"절에 매달려서 그 일이 국가와 관련이 있다고 말하는 오류가 발생했습니다 ... 내 스키마에는 해당되지 않습니다 ... 커뮤니티는 국가와 관련이 있습니다. 솔루션에 대한 아이디어가 있습니까? – Patrick