J'ai un tas d'entités avec à la fois un champ date_created et un champ date_modified, et j'essaye de faire en sorte que ces champs se définissent automatiquement sur insert ou update. date_created est uniquement défini sur insert, mais date_modified est défini sur insert ou update.Doctrine 2 événement preUpdate - non déclenché lors de l'insertion?
J'ai une méthode dans ma classe d'entité avec une annotation @PreUpdate, mais elle ne semble être appelée que lorsqu'une entité est mise à jour. Il n'est pas appelé lorsqu'une nouvelle entité est insérée. La documentation le dit à propos de l'événement preUpdate:
"L'événement preUpdate se produit avant les opérations de mise à jour de la base de données vers les données d'entité."
Est-ce correct? Si oui, quelle est la meilleure façon d'appeler une méthode avant la mise à jour ou l'insertion? À l'heure actuelle si je baliser la méthode à la fois @PreUpdate et @PrePersist il fonctionne, mais je ne suis pas sûr si cela est optimal:
/**
* @PreUpdate
* @PrePersist
*/
public function beforeSave()
{
if (!$this->getCreatedAt()) {
$this->setCreatedAt(new \DateTime());
}
$this->setModifiedAt(new \DateTime());
}
Merci - je considérais la création de 2 méthodes et de le faire de cette façon, mais je peux vivre avec. Je n'étais tout simplement pas sûr si preUpdate était légalement uniquement pour les mises à jour, ou les insertions et les mises à jour. –