2014-09-02 3 views
0

저는 세 엔티티 사이의 Doctrine 매핑과 관련하여 일부 의문점이 있습니다. 엔티티는 Natural, LegalOrders입니다. 여기서 NaturalOrders이 많고 Legal은 많으므로 Orders 일 수 있습니다.엔티티에서 Doctrine2 매핑/관계 다루기

/** 
* @ORM\OneToMany(targetEntity="Orders", mappedBy="natural") 
*/ 
protected $orders; 

public function __construct() 
{ 
    $this->orders = new ArrayCollection(); 
} 

그런 Orders 엔티티에 난이 있습니다 : Natural 엔티티에 내가 OrdersOneToMany 양방향 관계를 이렇게하면 코드

다음
/** 
* @ManyToOne(targetEntity="NaturalPerson", inversedBy="orders") 
* @JoinColumn(name="natural_id", referencedColumnName="id") 
**/ 
protected $natural; 

내 의심과 같습니다

  • 내가 제 3의 실체를 가지고 있기 때문에 :사이에 관계를 맺기 위해서 같은 절차를 따라야합니까? 및 Orders?
  • OrdersNatural 또는 Legal에 속하지만 두 가지가 아닌 빈 열을 남겨 두는 것이 심각한 불일치가 아닙니까?
  • Orders을 어떻게 저장합니까? 우선 Orders을 플러시하고 유지 한 다음 Legal 또는 Natural의 개체를 설정하여 setOrder() 메서드가 NaturalLegal이어야합니다.

희망 어느 날 사전에이 감사를 이해하는 데 도움이 될 수 있습니다

지금 때까지 가지고있는 DB 모델, 그것은 변경 될 수 있습니다 여기에

제안 DB 모델

enter image description here

+1

'NaturalOrders'에 대한 주문 1과 'LegalOrders'에 대한 자연적 및 법적 2 엔티티가 서로에게 속한 것이 아니라 서로 관련이 없으므로 하나의 '주문'엔티티에서 관련 주문을 유지해야하는 이유 way –

+0

비즈니스 모델이 Natural 및 Legal이 동일한 기본 엔터티에서 파생되는 것이 맞습니까? 그런 식으로 Order 엔터티 대신'protected orderType'을 가지게 될 것입니다.'targetEntity = "baseOrderType"' – Alex

+0

@MKhalidJunaid는 메인 포스트에서 모델을 가지고 있는데, 당신의 제안은 무엇입니까? 아이디어를 얻으려면 몇 가지 예제 코드로 대답 할 수 있습니까? – ReynierPM

답변

1

저는 제 3의 실체를 가지고 있기 때문에 : 법적으로 나는 따라야합니다. 법과 명령 사이의 관계를 만들기위한 절차?

예, 작동합니다.

주문이 자연 또는 법적이지만 둘 다 아닌 주문에 속하는 것과 같이 빈 열을 남겨 두는 것은 심각한 불일치가 아닙니까?

심각한가? 아니! 어쩌면 작지만 간단한 것이기 때문에 유지 관리가 더 쉽습니다. KISS.

주문을 저장하는 방법은 무엇입니까? Orders를 먼저 플러시하고 유지 한 다음 Legal 또는 Natural에 대한 객체를 설정하여 setOrder() 메서드가 Natural 및 Legal 권한에 있어야합니다.

오직 지속성 만 있으면됩니다. 끝까지 모두 플러시 할 수 있습니다.