我一直想知道symfony2首先会发生关于实体持久性的事情。
让我们举个例子说我在我的控制器中有一个函数,它在持久化数据时调用,但我还有一个运行PrePersist的生命周期回调。首先运行哪个功能?
此外,如果我希望根据用户提交的值(从表单)执行某种计算,最好是从控制器内部还是从实体内部执行此操作,再次使用PrePersist回调?
答案 0 :(得分:1)
拉丁语前缀 pre 表示“之前”。 ;)因此PrePersist回调将在持久化之前应用。
如果您在持久化时调用某些功能,则取决于$EntityManager->persist()
之前或之后。 LifecycleCallback是持久化操作的“原子”。详细地说,这意味着在UnitOfWork计算应该写入数据库的修改之前应用LifecycleCallback。
您还应该记住,在致电$EntityManager->flush()
之前,没有任何内容写入数据库。
至于计算:没有硬性规则,但作为一条经验法则: