Search code examples
symfonydoctrine-ormsonata-admin

SonataAdminBundle - check changes in `preUpdate` hook


Is it possible to check if field was changed on preUpdate hook? I'm looking for something like preUpdate hasChangedField($fieldName) Doctrine functionality. Any ideas?


Solution

  • This question is a bit similar to this one

    Your solution is just to compare the field of the old object with the new one and see where it differs.

    So for example:

    public function preUpdate($newObject)
    {
        $em = $this->getModelManager()->getEntityManager($this->getClass());
        $originalObject = $em->getUnitOfWork()->getOriginalEntityData($newObject);
    
        if ($newObject->getSomeField() !== $originalObject['fieldName']) {
            // Field has been changed
        }
    }