سؤال

أحاول اتباع النصيحة من مستندات العقيدة هذه الصفحة - تهيئة عضو في الفصل مع 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
{
    ...
}

عندما أقوم بنقل المُنشئ إلى فئة الوراثة ، يعمل كل شيء بشكل جيد. ولكن سيكون من الملقح أن يكون لهم في الطبقة المجردة الموروثة. لماذا لا تعمل؟ هل هو ممكن؟

هل كانت مفيدة؟

المحلول

خطأي. أنا حشو الخرائط. هذا هو التعيين الذي أستخدمه الآن:

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

يجب أن يكون الدور قادرًا على وجود العديد من الآباء والعديد من الأطفال

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top