在给定实体发生prePersist事件之前, 执行该实体的EntityManager持久操作。 应该 请注意,此事件仅在 实体(即它不会在以后的更新时触发)。
最后一部分很重要,使我感到奇怪; __contruct()
方法在那种情况下有什么区别吗?
假设我要为一个实体设置创建日期和时间(createdAt
)。我可以通过生命周期回调做到这一点:
/**
* @ORM\PrePersist
*/
public function setTimestamp()
{
$this->setCreatedAt(new \DateTime('now'));
}
或者我可以像这样使用构造函数:
public function __construct()
{
$this->createdAt = new \DateTime('now');
}
这完全一样吗?如果是这样,为什么会有PrePersist
生命周期回调?
答案 0 :(得分:1)
这完全一样吗?
不!它们在语义上是不同的。
请考虑以下情况:创建对象并处理一些数据(需要一些时间),然后将其持久化到数据库中。所以时间可能会有所不同。