2010-09-09 2 views
2

Я стараюсь следовать рекомендациям доктрины docs на this page - инициализировать член класса с помощью ArrayCollection. Все хорошо работает для примера, приведенного в документах. Я пытаюсь сделать это с унаследованным классом, но получаю сообщение об ошибке сказав:doctrine2 Ошибка ArrayCollection

Class Doctrine\Common\Collections\ArrayCollection is not a valid entity or mapped super class 

Наследуется класс:

/** 
* @Entity 
* @InheritanceType("JOINED") 
* @DiscriminatorColumn(name="discr", type="string") 
* @DiscriminatorMap({"user" = "App_User", "group" = "App_Group"}) 
*/ 

abstract class App_Acl_Role_Abstract implements Zend_Acl_Role_Interface { 

/** 
* @ManyToOne(targetEntity="App_Acl_Role_Abstract", inversedBy="children", cascade={"persist"}) 
*/ 
private $parents; 

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

public function __construct() 
{ 
$this->parents = new Doctrine\Common\Collections\ArrayCollection(); 
$this->children = new Doctrine\Common\Collections\ArrayCollection(); 
} 

}

Наследование Класс:

/** 
* @Entity 
* @Table(name="App_User") 
*/ 
class App_User extends App_Acl_Role_Abstract 
{ 
    ... 
} 

Когда Я перемещаю конструктор в наследующий класс, все работает отлично. Но было бы намного опрятно иметь их в унаследованном абстрактном классе. Почему это не работает? Является ли это возможным?

ответ

0

Мой плохой. Я заполнил карту. Это отображение я теперь с помощью:

/** 
* @ManyToMany(targetEntity="App_Acl_Role_Abstract", cascade={"persist"}) 
* @JoinTable(name="role_parents", 
*  joinColumns={@JoinColumn(name="role_id", referencedColumnName="id")}, 
*  inverseJoinColumns={@JoinColumn(name="parent_id", referencedColumnName="id", unique=true)} 
*  ) 
*/ 
private $parents; 

/** 
* @ManyToMany(targetEntity="App_Acl_Role_Abstract", cascade={"persist"}) 
* @JoinTable(name="role_children", 
*  joinColumns={@JoinColumn(name="role_id", referencedColumnName="id")}, 
*  inverseJoinColumns={@JoinColumn(name="child_id", referencedColumnName="id", unique=true)} 
*  ) 
*/ 
private $children; 

Роль должны быть в состоянии иметь много родителей и много детей

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