2012-02-29 4 views
1

doctrine 엔티티를 확장하고 그것을 유지하는 php 클래스를 가질 수 있습니까?doctrine doctrine 엔티티를 상속받은 php 클래스

예 :

/** 
* @Entity 
*/ 
class A { 
    /** 
    * @ORM\ManyToMany(targetEntity="C", mappedBy="parents") 
    */ 
    protected $children; 
} 

class B extends A { 
... 
} 

class C { 
    /** 
    * @ORM\ManyToMany(targetEntity="A", inversedBy="children") 
    */ 
    protected $parents; 
} 

$b = new B(); 
$em->persist($b); 

답변

3

네, 그것은이 inheritance mapping라고, 가능하지만, 자식 클래스는 명시 적으로 @Entity로 선언되어야하며 그 매핑을 자식 클래스가 추가로 추가하는 경우 명시 적으로 (도 정의 할 수있다 속성).

상속 매핑의 가장 일반적인 형태는 단일 테이블 상속있다가, 여기 교리 교재와 같은 매핑의 예입니다 : 귀하의 답변에 대한

namespace MyProject\Model; 

/** 
* @Entity 
* @InheritanceType("SINGLE_TABLE") 
* @DiscriminatorColumn(name="discr", type="string") 
* @DiscriminatorMap({"person" = "Person", "employee" = "Employee"}) 
*/ 
class Person 
{ 
    // ... 
} 

/** 
* @Entity 
*/ 
class Employee extends Person 
{ 
    // ... 
} 
+0

감사합니다 :) 불행하게도 우리는 때문에 상속 매핑을 사용할 수 없습니다 우리는 부모 클래스에 대한 연관성이 필요합니다. 상속 매핑이 상위 클래스의 연결과 제대로 작동하지 않습니다 ... – Charles

+0

"상위 클래스의 연결"은 무엇을 의미합니까? 예를 들어주세요! – Benjamin

+0

예제를 편집하십시오 – Charles

관련 문제