gpt4 book ai didi

Symfony preUpdate 与 prePersist

转载 作者:行者123 更新时间:2023-12-04 00:00:49 26 4
gpt4 key购买 nike

我是 Symfony2 的新手,我想知道 prePersist 和 preUpdate 事件有什么区别。看起来 prePersist 在我“保留”记录之前被“触发”,但是 preUpdate 什么时候触发?

最佳答案

这些都不是 Symfony 的一部分。它们是 Doctrine2 的一部分。 prePersist 在实体第一次持久化时触发。持久化一个对象意味着它由 Doctrine entityManager 管理,即使它在刷新之前实际上并没有被插入到数据库中。

更新前 是即将更新的现有对象上的相应事件。由于现有对象在查询时已由 entityManager 管理,因此不存在等效的持久事件。它基本上在现有对象已更改并调用刷新时触发。

换句话说,如果您没有更改对象中的任何内容 ,PreUpdate 不会运行!

话虽如此,您可以将这些视为“就在插入之前”和“就在更新之前”发生。

还有 2 种形式:生命周期回调 ,可以直接注释到实体中并作为方法添加到实体中,但只能访问实体属性。这些对于简单的操作很有用,比如时间戳、使字符串符合特定标准或生成派生属性。

也有真事件监听器 必须向 entityManager 注册,并且可以访问具有您期望在数据库触发器中的前/后数据类型的事件数据。

请注意,在 Doctrine version 2.4 they added event Data even for Lifecycle callbacks ,现在可以更简单、更轻松地执行您以前需要使用事件监听器执行的相同类型的操作。

关于Symfony preUpdate 与 prePersist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14345630/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com