每次更改属性时更新“已更新”属性

时间:2012-08-31 10:25:18

标签: symfony doctrine-orm

我的学说实体有一个名为datetime的{​​{1}}属性。这应该得到每次(更改)对象的值写入DB的当前时间。我知道如何在MySql中执行此操作,但我正在寻找一个doctrine / symfony解决方案。

有没有办法

  1. 在将实例的INSERT / UPDATE发送到DB之前挂钩。
  2. updated属性更新为当前时间,并确保将其写入数据库而不触发第二个UPDATE语句。

2 个答案:

答案 0 :(得分:5)

答案 1 :(得分:1)

您不需要任何扩展程序,只需使用Lifecycle Callbacks即可。 基本上,标记您的实体它具有使用HasLifecycleCallbacks注释配置的事件回调:

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\HasLifecycleCallbacks
 * ...
 */
class MyEntityClass {
...

然后标记要在发生的特定事件上运行的实例方法,例如设置updated

...
class MyEntityClass {
...
    /**
     * @ORM\PreUpdate
     */
    public function onPreUpdate() {
        $this->updated = new \DateTime();
    }
...
相关问题