2014-06-24 1 views
0

나는 PHPActiveRecord에서 다음과 같은 모델을 만드는 방법을 알아 내려고 노력하고 있지만 막혀서 누군가 나를 도와 줄 수 있는지 알고 싶습니다.PHPActiveRecord에서 왼쪽에 조인 된 테이블로 모델 설정하기

테이블 목록 :

atable (id [PK], ...) 
btable (id [PK], ...) 
ctable (atable_id [FK], btable_id [FK], statuscode) 

ctable의 외래 키 따라서, 테이블에 주어진 atable_id 및 btable_id 하나의 인스턴스 만이, 복합 기본 키이다 나는 간단한 예를 사용합니다.

나는 statuscode 열을 얻을 수 ctablebtableatable 가입 왼쪽 수 있도록하고 싶습니다. 그래서 샘플 SQL은 다음과 같이 보일 것이다 :

SELECT  a.id, b.id, c.statuscode 
FROM  atable a 
LEFT JOIN ctable c on c.atable_id=a.id 
LEFT JOIN btable b on c.btable_id=b.id 

어떻게 것 내가 설정 내 3 개 모델 (ATABLE, btable, ctable) 위의 정보에서 얻을 수있을 것?

감사합니다.

답변

1

내가 아는 한 phpactiverecord는 복합 기본 키를 지원하지 않으므로 일부 기능의 경우 별도의 키를 정의 할 수 있습니다.

추가 : 상태 코드 열은이 경우 고유하지 않습니다. atable_id에 대해 복수 btable_id 항목이있을 수 있습니다. 따라서이 경우 하나의 히트는 없습니다. -> 이것은 개체를 만드는 것과 관련이 없습니다. 개체를 만들고 그 외에도

는, 당신은 ctable.atable_idatable.id 사이의 연결 (뿐만 아니라에 대한 btable 분명히을) 반영하는 관계를 가질 것 너무 어렵지 않을 것이다.

하나의 항목 (개체, 모델)이 atablebtable에 속하기 때문에이 둘에 대한 속한 관계를 정의 할 수 있습니다.
다른 방법으로 atable 행 (개체, 모델)은 ctable 행을 여러 개 가질 수 있으므로 해당 관계를 hasmany으로 정의하십시오.

는 다음

foreach ($atable->ctables as $ctable) { 
    echo $ctable->btable->id.' '.$ctable->statuscode; 
} 
+0

감사를 할 수있는 상태에 ATABLE에서 얻을 수 있습니다. 관계 설명을 통해 모델을 올바르게 설정하는 데 도움이되었습니다. – rchawdry