Frage

Ich versuche, die Ratschläge der Lehre docs auf diese Seite - einen Teilnehmer mit dem Arraycollection initialisiert. Alle funktionieren gut für das Beispiel in der Dokumentation gegeben. Ich versuche es mit einer vererbten Klasse zu tun, sondern einen Fehler zu sagen:

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

geerbt Klasse:

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

}

Vererben Klasse:

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

Wenn ich den Konstruktor der Klasse vererben bewegen funktioniert alles in Ordnung. Aber es wäre viel sauberer sein, um sie in der geerbten abstrakten Klasse zu haben. Warum funktioniert es nicht? Ist es möglich?

War es hilfreich?

Lösung

Meine schlecht. Ich stopfte die Abbildung oben. Dies ist die Abbildung Ich bin jetzt mit:

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

Eine Rolle soll viele Eltern und viele Kinder haben kann,

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top