2012-05-29 6 views
3

엔티티가 Revision 인 일대일, 자기 참조, 양방향 관계 (와우)를 만들려고합니다. 다음과 같습니다 다음 parent 재산없이일대일 자기 참조, 양방향 관계

/** 
* @Entity() 
* @Table(name="rev") 
*/ 
class Revision extends BaseEntity 
{ 
    /** 
    * @Id 
    * @Column(type="integer") 
    * @GeneratedValue 
    */ 
    protected $id; 

    /** 
    * @Column(type="string") 
    */ 
    protected $comment; 

    /** 
    * @OneToOne(targetEntity="Revision", inversedBy="parent") 
    * @JoinColumn(name="revision_of", referencedColumnName="id") 
    */ 
    protected $revisionOf; 

    /** 
    * @OneToOne(targetEntity="Revision", mappedBy="revisionOf") 
    */ 
    protected $parent; 
} 

이 모든 것이 잘 작동합니다. 이 속성을 추가하면 두 관계 모두 null을 반환합니다.

즉각적인 질문은 다음과 같습니다. 내가하려는 것은 교리에서 성취 될 수 있습니까? 그렇다면 어떻게해야할까요? 당신이 양방향 관계를 가질 때

+0

와 함께이에 대한 해결책을 찾았 해결했다? 나는 똑같은 일을하고 싶지만, 나는 oneToOne 자체 참조와 관계를 분리했다. 그리고 나는 여전히 이슈를 얻는다. – bksunday

+1

문제를 신경 쓰지 않아요. typo가 있습니다. 동일한 referen 된 콜론 이름을 사용하여 2 개의 서로 다른 열에 2 개의 단방향 관계를 설정하면 작동하지만, 여전히 양방향에 대해 궁금합니다. – bksunday

답변

1

내 자신의 질문에 대답이 경우 양쪽

을 관리해야이 불가능합니다 . bksunday가 말했듯이이 동작을 수행하려면 두 개의 열이 필요합니다.

불행히도 일부 데이터 복제가 필요합니다.

0

, 당신은

$revision->setRevisionOf($revisionOf); 
$revisionOf->setParent($revision); 

Doctrine Working with associations

In the case of bi-directional associations you have to update the fields on both sides: 
1

나는이 하나

oneToOne: 
    previous: 
    targetEntity: Change 
    mappedBy: next 
    joinColumn: 
     name: id 
     referencedColumnName: next_id 
    next: 
    targetEntity: Change 
    inversedBy: previous 
+0

이 문제는 향후 https://github.com/doctrine/doctrine2/issues/3752를 따르는 데 유용 할 수 있습니다. – shakaran