Doctrine 2 PrePersist doesn't fire

Tom picture Tom · Oct 28, 2011 · Viewed 14.9k times · Source

Within the same entity I have a PreUpdate and a PrePersist. The PreUpdate fires, but the PrePersist never does. I put a die() after the flush and comments within the lifecycle callbacks. Full entity can be seen at http://pastebin.com/yUk1u4GQ

Entity callbacks

/**
* @PreUpdate
*/
public function fixDates(){
    $this->updatedOn = $this->getNow();
    $this->closedDate = null;
    $this->openDate = null;
    print "dates fixed";
}

/**
* @PrePersist
*/
public function prePersist() {
    print 'in prePersist';
    die();
}

Entity Manager calls

$em->persist($school);

$em->flush();
die();

My screen reads "dates fixed", but not the prePersist message. I do have the @HasLifecycleCallbacks at the top of the entity.

Answer

Thierry Daguin picture Thierry Daguin · Nov 16, 2012

Don't forget to enable Lifecycle Callbacks in your class annotation :

/**
 * Report\MainBundle\Entity\Serveur
 * @ORM\HasLifecycleCallbacks
 */
class Serveur {