2013-04-01 5 views
0

하나의 자기 참조 관계를 저장하는 데 문제가 있습니다. 부모와 자식 모두 데이터베이스에 제대로 저장되지만, 어린이에게는 parent_id null이 표시됩니다. . 나는 교리 예 ...하지만 생각Doctrine 2 - 1 대 다수의 자체 참조 관계를 저장할 수 없습니다.

namespace CD\Entity; 
/** 
* @Entity 
*/ 

class Category { 


/** 
* @Id 
* @Column(type="integer") 
* @GeneratedValue(strategy="IDENTITY") 
*/ 
private $id; 

/** @Column(type="string",length=50) */ 
private $name; 


/** 
* @OneToMany(targetEntity="Category", mappedBy="parent",cascade={"persist"}) 
*/ 
private $children; 

/** 
* @ManyToOne(targetEntity="Category", inversedBy="children") 
* @JoinColumn(name="parent_id", referencedColumnName="id") 
*/ 
private $parent; 


// setters and getters ... 

}

여기 내 컨트롤러 folloed : 정말 뭘 메신저 몰라요

public function insertAction() 
{ 

    $cm = new CD\Entity\Category(); 
    $cc = new CD\Entity\Category(); 

    $cm->name = 'mainCat'; 
    $cc->name = 'childCat'; 

    $cm->children = array($cc); 

    $this->_em->persist($cm); 
    $this->_em->flush();   

} 

을 잘못

답변

0

을 가지고 시도했습니다. Doctrine Extensions, 특히 tree 확장 프로그램을 사용해 보셨습니까? 이렇게하면 매우 쉽게 작업 할 수 있습니다.

0

모든 엔티티를 유지해야합니다. 그리고 실행 한 후

교리 (가정 당신은 교리를 사용) : 생성 : 엔티티 CD/법인

당신의 함수에 아이를 추가하는 데 사용되어야한다 "범주 ->의 addChildren"라는 것이다 기존 카테고리 엔티티.

이 시도 :

public function insertAction() 
{ 

    $cm = new CD\Entity\Category(); 
    $cc = new CD\Entity\Category(); 

    $cm->setName('mainCat'); 
    $cc->setName('childCat'); 

    $cm->addChildren($cc); 

    $this->_em->persist($cm);   
    $this->_em->persist($cc);   

    $this->_em->flush();   

}