doctrine2 ArrayCollection error - PullRequest
       22

doctrine2 ArrayCollection error

2 голосов
/ 10 сентября 2010

Я пытаюсь следовать советам из доктрины на этой странице - инициализация ученика с 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
{
    ...
}

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

1 Ответ

0 голосов
/ 10 сентября 2010

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

/**
 * @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;

Роль должна иметь много родителей и много детей

...