Доктрина 2. Не удается заставить LifecycleCallBack работать с объектами наследования одной таблицы? - PullRequest
0 голосов
/ 08 сентября 2011

Есть ли ошибка, которая не позволяет этого? Я поместил аннотацию LifecycleCallBacks и метод преперсиста в базовый класс (также пробовал также дочерние классы) и не могу заставить работать 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 Ответ

3 голосов
/ 12 сентября 2011

Я попробовал это с предложенным вами отображением, и в этом созвездии действительно есть проблема.

Это сработало, когда я сделал:

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

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

    ...
}


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

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

Как кажется, метод должен присутствовать в родительском классе, даже если он может быть объявлен как абстрактный. Странно, может быть ошибка.

...