1

我的学说实体有一个datetime名为updated. 每次将对象的(更改的)值写入数据库时​​,这应该获取当前时间。我知道如何在 MySql 中做到这一点,但我正在寻找一个学说/symfony 解决方案。

有没有办法

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

2 回答 2

5

请参阅DoctrineExtensions时间戳行为。有StofDoctrineExtensionsBundle可以将其集成到 Symfony 中。

于 2012-08-31T10:32:07.780 回答
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();
    }
...
于 2012-09-02T10:54:10.057 回答