2012-04-27 3 views
2

Im doctrine2에 새로워졌습니다. 다음과 같이 연결해야합니다.동적 변수를 기반으로 Doctrine에서 동적 연결을 만드는 방법은 무엇입니까?

태그에 (추상) 리소스가 연결되어 있습니다. (추상) 리소스에 태그가 있습니다.

코드를 기반으로 Entity 리소스의 개체를 danamicly 입력하고 싶습니다. 이렇게하면 주어진 인터페이스를 구현하는 모든 엔티티에 태그를 첨부 할 수 있습니다.

Im 젠드 프레임 워크와 주석 doctrine에서 docblock 스타일 사용.

또 다른 예는 "메시지"엔티티이고 시스템에는 텍스트 메시지가 있지만 작성자와 수신자 연결은 있지만 작성자와 수신자에 따라 서로 다른 대상을 갖고 싶습니다. 예를 들어 Admin Entity는 User Entity에게 메시지를 보내거나 User Entity는 VipUser Entity에게 메시지를 보냅니다.

답변

2

클래스 테이블 상속과 같은 소리가이 문제에 대한 완벽한 해결책입니다.

http://docs.doctrine-project.org/projects/doctrine-orm/en/2.0.x/reference/inheritance-mapping.html#class-table-inheritance

당신은 기본적으로 부모 클래스 (태그)를 만들고 각 자식에 대한 판별 맵을 제공해야합니다. 그래서 예를 들어 ..

/** 
* @Entity 
* @InheritanceType("JOINED") 
* @DiscriminatorColumn(name="discr", type="string") 
* @DiscriminatorMap({"tag" = "Tag", "message" = "Message", "otherentity" = "OtherEntity"}) 
*/ 
class Tag 
{ 
    // tag properties/definitions etc 
} 

/** @Entity */ 
class Message extends Tag 
{ 
    // Message specific stuff 
} 

당신은 당신이 필요로하는 다른 엔티티에 "태그"엔티티를 확장 할 수 있습니다. 판별 자 맵 값을 업데이트해야합니다. 이 doctrine2 확장 밖으로

+0

이것은 좋은 생각입니다. 이 문서는 매우 열악합니다. 주어진 유형 (예 : 사용자가 Admin 엔터티, VIP 엔터티 및 StandardUser 엔터티 일 수 있음)의 추상 사용자 엔터티에 메시지 엔터티를 연결할 수 있습니까? 그렇다면이게 그거야! :-) –

+0

수 있습니다. 그러나 개인적으로 저는 역할을 사용합니다. 역할 ManyToOne 사용자, ManyToOne 사용자에게 메시지를 보냅니다. –

관련 문제