2014-10-06 1 views
0

2 개의 테이블이 있습니다. 하나는 2 개의 기본 키, 즉 복합 키를 갖는다. 그리고 다른 테이블의 외래 키도 마찬가지입니다. 이제 Doctrine은 항상 외부 키가 아닌 객체를 반환합니다. 단일 기본 키의 경우에는 어떻게 든 확보 할 수 있지만 복합 키의 경우에는 수행 방법을 잘 모릅니다. 하나의 기본 키의 경우foriegn kay의 가치를 얻으려면 오히려 교리 + 심포니가 필요하십니까?

코드를 다음과 같이 위의 의지에 대한

$patient = $this->entity->getPatient(); 
$patient_vars = $patient->toString(); // Inernal function to get private variables 
$em = $this->doctrine->getManager(); 
$metaLabTest = $em->getClassMetadata(get_class($patient)); 
$identifierLabTest = $metaLabTest->getIdentifier($patient); 
$metaPatient = $em->getClassMetadata(get_class($patient_vars[$identifierLabTest[0]])); 
$identifierPatient = $metaPatient->getIdentifier(); 
$getFn = "get".$identifierPatient[0]; 
return $patient_vars[$identifierLabTest[0]]->$getFn(); 

어떤 제안 내가 교리와 심포니 꽤 새로운 오전뿐만 아니라 감사합니다.

미리 감사드립니다.

+0

왜 원시 키로 작업하고 싶습니까? – andy

+0

그냥 외래 키의 단순한 값을 반환하고 싶지만 Doctrine은 그 개체를 반환합니다. 그래서 방금 위에서 언급 한 방법을 시도하고 그것은 작동하지만 합성 키의 경우에는 작동하지 않습니다. 이를 달성 할 수있는 더 좋은 방법이 있는지 제안 해주십시오. – user3170450

+0

[이 질문은] (http://stackoverflow.com/questions/8211679/can-you-get-a-foreign-key-from-an-object-in-doctine2-without-loading-that-object) what 당신이 찾고있는? 나는 아직도 당신의 질문을 얻지 못합니다. 교리의 핵심은 원시 데이터베이스 액세스가 아닌 객체를 제공하는 것입니다. – andy

답변

관련 문제