2013-06-07 3 views
1

vendor/CoreBundle을 확장하는 src/SiteBundle이 있고 CoreBundle 스키마를 복제하지 않고 siteBundle schema.xml에 "label"모델/테이블을 추가하고 싶습니다. xml. 아무 문제 없니? 바하마!Propel 1.6 및 Symfony 2 : 번들 상속 및 스키마 종속성

SiteBundle "label"테이블에 CoreBundle에 정의 된 테이블을 가리키는 외래 키 (예 : label.product_id)가있는 경우 문제가 발생합니다. Propel은 열 의존성이 해결되지 않았다고 생각하기 때문에 "레이블"모델을 작성하기를 거부합니다.

SiteBundle이 CoreBundle을 확장한다는 것을 Propel이 이해할 수 있도록 빌드 타임에 두 개의 schema.xml 파일을 컨텍스트 화하는 방법이 있습니까? 나는 간단한 schema.xml 병합이 내가 무엇을했는지 추측한다.

N.B. Propel의 스키마/모델 상속 개념에 대해 조사해 보았습니다. 그러나이 솔루션에 해당하는 솔루션은 없습니다.

답변

0

는 하나 같은 일

<database name="site" namespace="Site\Bundle\Model" package="default"> 
    ... 
</database> 

또는

을 설정하여 모두에의 schema.xml 파일의 패키지 속성을 설정하여 Propel Bundle 당신이 빌드 타임에의 schema.xml 파일을 맥락화 할 않는 것을 밝혀
propel.namespace.autoPackage: true 

Propel 빌드 속성 설명서 here.

그러나 실제로 내 문제는 Symfony2의 번들 오버라이드 방법 getParent()이 어떻게 작동하는지 오해 한 간단한 사실에서 비롯된 것입니다. 내 문제는 Propel 구성/스키마를 혼자서 또는 둘 중 하나를 사용하여 가장 깨끗하게 해결할 수 있습니다.

  • SiteBundle :: getParent() 메서드를 제거하거나;
  • SiteBundle schema.xml 파일 앞에 무언가 (무엇이든)가 붙어있어 getParent() 재정의에도 불구하고 Propel이 두 스키마 파일을 모두 가져올 수 있습니다.