2013-06-13 1 views
0

Symfony에서 분류 광고와 유사한 사이트 용으로 목록 시스템을 만들려고합니다. 다른 필드 (및 일부 공통 필드)가있는 여러 목록 유형을 갖고 싶습니다.Doctrine 클래스 테이블 상속 - 여러 유형

나는 모든 공통 필드 (name, description, price)를 가지고있는 메인 리스팅 클래스를 만들고 다른 타입들에 특정한 필드를 가진 서브 클래스를 만들려고했다.

내 연구를 통해 Doctrine의 클래스 테이블 상속이 가장 좋은 솔루션이라고 생각됩니다. 이 문제가 맞습니까? 최대 10 개의 하위 유형이있을 수 있으며 실적이 좋지 않을 수도 있다고 들었습니다.

/** 
    * Listing 
    * 
    * @ORM\Table(name="listing") 
    * @ORM\InheritanceType("JOINED") 
    * @ORM\DiscriminatorColumn(name="discr", type="string") 
    * @ORM\DiscriminatorMap({"listing" = "Listing","recreation-vehicle" = "RecreationVehicle","vehicle" = "Vehicle","event" = "Event","classified" = "Classified","buyandsell" = "BuySell","real-estate" = "RealEstate","business" = "Business"}) 
    */ 
    class Listing 
    { 

} 

고마워요!

답변

0

Class Table Inheritance의 교리 문서에서 몇 가지 고려 사항을 찾을 수 있습니다. 몇 가지 중요한 사실을 발췌 : 모든 종류의 변경은 항상 해당 유형의 전용 테이블로 제한되어 있기 때문에

  • 는 디자인 타임에 큰 유연성을 제공
  • 이 전략은 본질적으로 다수의 어떤 쿼리에 대해 바로 수행 할 작업을 가입 요구하는 수 특히 큰 테이블 및/또는 대형 계층 구조
  • 하나만 상속 수준이 따라

성능에 부정적인 영향을 가지고이 큰 영향 안 (모든 명부 작성은 기본 Listing을 확장).