Symfony2仅在依赖实体字段更改时更新doctrine实体字段

时间:2014-06-22 14:44:36

标签: php symfony doctrine-orm crud lifecycle

Symfony2或Doctrine2中是否有预先定义的方法来运行特定的代码段。仅在特定实体字段更改时使用EventSubscriber或Service?

在我的用例中,用户可以创建一个新项目。 他们可以为项目提供特定选定货币的价值。 该值将转换为他们选择的基础货币。

问题在于,我只想在首次创建项目时或仅更改项目值属性时触发计算/转换。

我现在正在使用一个解决方案,我订阅了doctrine postPersist事件,但如果它们只是更改了项目的名称,则会触发转换。

编辑:正如丹尼斯所指出的,我应该清楚地提到我在composer.json中有这个约束,因为教义> = 2.2.3,< 2.4-dev

1 个答案:

答案 0 :(得分:2)

documentation给出了这个例子:

<?php
// ...

class User
{
    public function preUpdate(PreUpdateEventArgs $event)
    {
        if ($event->hasChangedField('username')) {
            // Do something when the username is changed.
        }
    }
}

你试过吗?

P.S。它只适用于Doctrine 2.4。