如何使用生命周期回调
编辑本页警告:您正在浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 4.1,现已不再维护。
读本页的更新版本用于Sy欧宝娱乐app下载地址mfony 6.2(当前稳定版本)。
如何使用生命周期回调
有时,您需要在插入、更新或删除实体之前或之后执行某个操作。这些类型的操作被称为“生命周期”回调,因为它们是你需要在实体生命周期的不同阶段执行的回调方法(例如,实体被插入、更新、删除等)。
如果要对元数据使用注释,首先要启用生命周期回调。如果您使用YAML或XML进行映射,则不需要这样做。
1 2 3 4 5 6 7 8
/ * * *@ORM() * \实体@ORM\ HasLifecycleCallbacks () * /类产品{/ /……}
现在,您可以告诉Doctrine在任何可用的生命周期事件上执行一个方法。例如,假设你想要设置一个createdAt
Date列到当前日期,仅当实体第一次被持久化(即插入)时:
- 注释
- YAML
- XML
1 2 3 4 5 6 7 8 9
/ / src /实体/ Product.php/ * * *@ORM\ PrePersist * /公共函数setCreatedAtValue(){$这->createdAt =新\ DateTime ();}
请注意
上面的示例假设您已经创建并映射了一个createdAt
属性(此处未显示)。
现在,在首次持久化实体之前,Doctrine将自动调用此方法和createdAt
字段将被设置为当前日期。
还有一些其他的生命周期事件可以被您钩入。有关其他生命周期事件和生命周期回调的更多信息,请参阅Doctrine生命周期事件文档欧宝体育电话.
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。