Doctrine 2:无法让LifecycleCallBacks与单表继承实体一起使用?

时间:2011-09-08 07:27:18

标签: php doctrine doctrine-orm

是否存在不允许此错误的错误?我已经将LifecycleCallBacks注释和prepersist方法放入基类(也尝试了子类),并且无法使LifecycleCallBacks正常工作。任何投入将不胜感激!谢谢!

/**
 * @Entity(repositoryClass="Entity\Repository\EventRepository") 
 * @HasLifecycleCallbacks
 * @Table(name="events")
 * @InheritanceType("SINGLE_TABLE")
 * @DiscriminatorColumn(name="type", type="string")
 * @DiscriminatorMap({"phone" = "PhoneEvent", "meeting" = "MeetingEvent"})
 */
class Event implements \ActivityItem{

    /** @PrePersist */
    public function setComplianceStatus(){...}

}

这不起作用,所以我也试过了:

/**
 * @Entity @HasLifecycleCallbacks
 */
class PhoneEvent extends Event{

    /** @PrePersist */
    public function setComplianceStatus(){}
}

1 个答案:

答案 0 :(得分:3)

我尝试了你提出的映射,这个星座似乎确实存在问题。

当我这样做时,它起作用了:

/**
 * ...
 * @Entity
 * @HasLifecycleCallbacks
 */
class Event {
    ...

    /** @PrePersist */
    public abstract function setComplianceStatus();

    ...
}


/**
 * @Entity
 * @HasLifecycleCallbacks
 */
class PhoneEvent extends Event{

    /** @PrePersist */
    public function setComplianceStatus() {
        // implementation goes here
    }
}

看起来该方法必须存在于父类中,即使它可以声明为抽象。奇怪,可能是一个错误。