当一个特殊领域发生变化时做一些事情(学说)

par*_*sss 1 updates symfony doctrine-orm

我使用 symfony2 和学说。当实体的特殊属性发生变化时,我想做一些更改;实际上我想保存我的属性的更改并拥有它的更改状态。例如,当任何字段更改执行与更改的字段名称相关的某些操作时,我该怎么说。

例如,如果电子邮件更改,则向另一个实体添加一些行。

谢谢。

Yan*_*oné 5

您应该能够使用 Doctrine Listeners 和 UnitOfWork 变更集做一些事情,如下所示:

use Doctrine\ORM\Event\LifecycleEventArgs;

class DoctrineListener
{
    public function preUpdate(LifecycleEventArgs $args)
    {
        $entity = $args->getEntity();
        $entityManager = $args->getEntityManager();

        if ($entity instanceof MyEntityClass) {
            $changeSet = $entityManager->getUnitOfWork()->getEntityChangeSet($entity);
            if (isset($changeSet['my_field'])) {
                //do something here
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

例如,这就是一些 Doctrine 扩展注册其更改的方式。