2012-03-28 4 views
0

나는 SINGLE_TABLE 상속을 구현하는 2 개의 하위 엔터티 (FooBar)가있는 Parent 엔터티를 가지고 있습니다.Doctrine2에서 식별자를 동적으로 설정하기

new Parent() 엔티티를 만들고 foo을 동적으로 설정하면 new Foo()이 생성되지 않습니까?

+0

는 아니, 적어도 불가능 못생긴 해킹없이. 왜 그걸하고 싶니? – Benjamin

+0

나는 discriminator를 나타내는 문자열을 얻는 시나리오를 가지고 있으며 그 유형의 엔티티를 만들어야합니다. 그 방법을 만들었습니다. 더 좋은 방법이 있는지 알고 싶었습니다 .. – tamir

답변

0

아니, 당신은 정말 당신의 코멘트에서 언급 한 시나리오를 필요로하는 경우에, 당신은 아마 팩토리 메소드의 어떤 종류의 더 나은 것,이되지 않습니다 :

abstract class MyParent 
{ 
    public static function fromString($type) 
    { 
     switch ($type) { 
      case 'foo': 
       return new Foo(); 
      case 'bar': 
       return new Bar(); 
     } 
     throw new DomainException('Unknown type: ' . $type); 
    } 
} 
+0

감사합니다. btw, 왜 클래스 추상을 선언 했습니까? – tamir

+0

그냥 하위 클래스 만 인스턴스화한다고 가정했기 때문에. 그러나 부모 클래스가 인스턴스화 될 수 있다면'abstract' 키워드를 제거 할 수 있습니다! – Benjamin

관련 문제