public function preUpdate(LifecycleEventArgs $args) { $document = $args->getDocument(); // perhaps you only want to act on some "Product" document if ($document instanceof Project) { $dm = $args->getDocumentManager(); $document->setDateUpdated(new \DateTime("now")); $class = $dm->getClassMetadata("Zeega\\DataBundle\\Document\\Project"); if ($args->hasChangedField("tags")) { $update = true; $oldTags = $args->getOldValue('tags'); foreach ($oldTags as $tag) { $name = $tag->getName(); $id = $tag->getId(); if ($name == 'homepage' && $id !== null) { $update = false; break; } } if ($update === true) { $document->setDateTagsUpdated(new \DateTime("now")); } } $dm->getUnitOfWork()->recomputeSingleDocumentChangeSet($class, $document); } }