Doctrine orm 后持久主义

Doctrine orm 后持久主义,doctrine-orm,Doctrine Orm,我使用Slim V3的条令,我想拥有PostPersist/PostUpdate功能 这是我的实体 namespace App\Entity; use Doctrine\ORM\Mapping as ORM; /** * * @ORM\Table(name="xxxx", indexes={@ORM\Index(name="xxxx", columns={"xxxx"})}) * @ORM\Entity * @ORM\HasLifecycleCallbacks() */ class

我使用Slim V3的条令,我想拥有PostPersist/PostUpdate功能

这是我的实体

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 *
 * @ORM\Table(name="xxxx", indexes={@ORM\Index(name="xxxx", columns={"xxxx"})})
 * @ORM\Entity
 * @ORM\HasLifecycleCallbacks()
 */
class MyEntity
{

....

/**
 * Set lastUpdate
 *
 * @param \DateTime $lastUpdate
 *
 *
 * @ORM\PostPersist()
 * @ORM\PostUpdate()
 */
public function setLastUpdate($lastUpdate)
{
    $this->last_update = new \DateTime('now');


    return $this;
}

但是,当我持久化实体时,我的字段将保持为空

如果要更改数据库值,则侦听的是错误的事件。关于:

  • postPersist-实体持久化后,实体发生postPersist事件。它将在数据库关闭后被调用 插入操作。生成的主键值在中可用 后期事件
  • postUpdate-对实体数据执行数据库更新操作后发生postUpdate事件。它不是为DQL更新而调用的 声明
因此,最好处理
pre
事件,而不是
post
事件。例如:

/**
 *
 * @ORM\PrePersist()
 * @ORM\PreUpdate()
 */
public function setLastUpdate()
{
    $this->last_update = new \DateTime('now');


    return $this;
}
希望这有帮助