2013-04-01 3 views
0

У меня проблема с сохранением отношения ко многим отношениям с самооценкой, и родительский, и дочерний элементы сохраняются должным образом в базе данных, но Im получает parent_id null для детей , я folloed доктрину пример ... но не знаюDoctrine 2 - не удалось сохранить одно-много отношение самоопределения

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 ... 

}

и мой контроллер здесь:

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

Вам необходимо сохранить ВСЕ свои сущности. И после запуска (если вы используете учение)

доктрину: генерировать: объекты CD/Entity

Ваш будет функция с именем «category-> 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();   

} 
Смежные вопросы