2017-03-25 8 views
1

엔티티 속성을 다른 엔티티에 저장된 객체 목록에서 오는 선택된 객체와 매핑하는 것이 가장 좋은 방법인지 알 수 없습니다.엔티티 속성을 다른 엔티티의 개체 목록에서 오는 개체와 매핑하는 방법은 무엇입니까?

예 사용 사례 :

  • 나는 (이 등 많은 단체 및 활성화 등의 속성 ...이 때문에 내가 엔티티를 가질 필요가 ) 5 개 계정 유형과 AccountType 개체가 있습니다.
  • 나는 $accountType 속성이있는 User 엔티티가 있습니다.
  • UserAccountType (, 양식은) 중 하나만 선택할 수 있습니다.

질문 :

User:accountType 속성을 매핑하는 일반적인 방법입니다

? 이를 고려할 때 각 계정 유형에 속한 모든 사용자를 검색하는 등의 통계 데이터를 검색해야합니다.

나는 string으로 $accountType을지도하고 oneToOne 연결을 사용하여지도 $accountType 같은 다른 방법을 문자열을 estrapolate 또는 존재하는 Data Transformer를 사용해야합니까?

답변

1

이것은 일반적입니다. ManyToOne 관계가 필요합니다.

class User 
{ 
    //... 

    /** 
    * Many Users will have One AccountType 
    * 
    * @ORM\ManyToOne(targetEntity="AccountType") 
    */ 
    private $accountType; 


    /** 
    * @return AccountType 
    */ 
    public function getAccountType() 
    { 
     return $this->accountType; 
    } 
} 

당신은 다음과 같이 사용자에 연결된 ACCOUNTTYPE 개체를 얻을 수 있습니다, 당신은 (즉,에서 OneToMany 관계를 정의 양방향 관계를 정의 할 수 있습니다

$user->getAccountType(); // AccountType object 

필요에 따라 AccountType 엔터티). 즉, 같은 것을 할 수 있도록합니다 :

$accountType->getUsers(); 

이것은 당신의 실체에 조금 더 많은 일을하지만, 몇 줄의 코드만으로 정말 강력한 것입니다.

+0

도움을 주셔서 감사합니다. 아직 문서를 실제로 연구 할 시간이 없었으며 답변을 보는 것이이 경우에 적합한 것으로 보입니다. 대답을 완료하려면 DataTransformer를 사용해야하고 다른 접근법을 사용해야하는 매우 간단한/일반적인 사례/예를 추가 할 수 있습니까? (전체 코드는 아니지만 약간의 설명은 신빙성이 없다). 몇 시간 후에 다시 올게 :-) – RocketOne

+0

DataTransformer를 사용하지는 않았지만 AccountType 엔티티가 있기 때문에 원하는 것으로 생각하지 않습니다. 연결된 DataTransformer 페이지의 예제에는 배열로 저장된 속성 (태그)이 있습니다. 이 방법을 선택한 경우 다른 농구를 뛰어 넘어 개체를 만들지 않는 한 연결된 계정 유형의 속성에 대한 액세스가 끊어집니다 (사용자로부터). 당신이 그것을 모두 자동적으로 얻을 수 있다면 왜 그렇게합니까? – ehymel