2013-06-12 2 views
0

Zend 2의 튜토리얼을 끝내고 Zend \ Db 구성 요소에 실망했습니다. 실제로, 외래 키 (내장형)를 처리 할 수 ​​없습니다.실제 프로젝트에서 Zend Framework 2에서 Zend Db를 사용하는 방법은 무엇입니까? 외래 키와 관계에 관한 탐구

현실 세계 프로젝트 (10 가지 테이블과 관계를 빌려서)에서이 문제에 접근하는 방법은 무엇입니까?

Zend_Db (ZF1)의 findDependentRowset 또는 findParentRow를 다시 작성하려고 시도해야합니까? 데이터 매퍼 패턴으로 팔린 외부 세계를 모르는 PHP 객체의 독단을 깨뜨릴 수 있기 때문에 이것이 불가능하다고 생각한다면 틀렸다.

항상 외래 키/관계를 사용하는 코드가 엔티티를 나타내는 개체에서 수행 할 필요가 없다고 생각해야합니까? 이것은 아름다운 스파게티 코드로 끝날 수 있습니다.

Doctrine 또는 Propel에 대해 Zend \ Db를 드롭해야합니까?

답변

5

이것은 논쟁의 여지가있는 질문이므로 곧 닫힙니다. 궁극적으로 Doctrine2 (또는 Propel)은 똑같은 작업을 수행하므로 Zend\DbHydrationStrategies으로 수동으로 처리 할 수 ​​있습니다.

문제는 Zend\Db은 모두 Doctrine2을 만들기 위해 내장되어 있습니다. 당신은 정확히 같은 종류의 일을 할 수 있지만, Zend\Db은 본격적인 본격적인 대상이되지 않습니다. DBAL. Zend\Db 구성 요소는 데이터베이스 쿼리를 처리하기위한 것입니다. 또한 TableGateway과 같은 몇 가지를 사용할 수 있습니다.

그러나 Zend\Db이 DBAL이 될 것으로 예상되는 경우 간단히 오해됩니다. Zend\Db은 더 나은 솔루션이 있기 때문에 모든 DBAL 항목에서 밝아졌습니다. 당신이 언급 한 두 가지가 처음에는 생각 났을 것입니다. ZF1에서도 Zend_Db - 구성 요소는 실제 DBAL이 수행 할 수있는 것과 일치 할 수 없었으므로 ZF2 설계 중에 결정되어 Zend\Db 구성 요소를 밝힙니다. 이제는 쉬운 일을 할 때 유용하지 않을 것이므로 HydrationStrategies을 사용하여 "ForeingKeyToObject"- 매핑을 수행 할 수 있지만 약간의 작업이 필요합니다. 더 쉬운 해결책을 원한다면 제 투표는 DoctrineModuleDoctrineORMModule

+0

입니다. 제 이해력에 도움이되는 매우 상세한 답변입니다. – AsTeR