Php 原则2:调用persist时始终激发的生命周期事件
我是否可以订阅一个Doctrine 2生命周期事件,每当我调用实体上的Php 原则2:调用persist时始终激发的生命周期事件,php,orm,doctrine-orm,doctrine,Php,Orm,Doctrine Orm,Doctrine,我是否可以订阅一个Doctrine 2生命周期事件,每当我调用实体上的persist()和flush()时,该事件总是会触发 我希望在用户“保存”某个实体时,基于该实体生成一个缓存文件,而不管Doctrine是否实际发出SQL update语句 我正在考虑的解决方法是添加一个总是与数据库不同步的额外字段,以强制持久化/更新,但我更喜欢总是调用的事件 顺便说一句: 执行实体持久化的代码在第三方包中,如果可以避免的话,我宁愿不破解它 您是否尝试过(插入)+预更新(更新)?如果是的话,你遇到了什么问
persist()
和flush()
时,该事件总是会触发
我希望在用户“保存”某个实体时,基于该实体生成一个缓存文件,而不管Doctrine是否实际发出SQL update语句
我正在考虑的解决方法是添加一个总是与数据库不同步的额外字段,以强制持久化/更新,但我更喜欢总是调用的事件
顺便说一句:
- 执行实体持久化的代码在第三方包中,如果可以避免的话,我宁愿不破解它
public function onFlush(OnFlushEventArgs$args){$args->getEntityManager()->getUnitOfWork()->getIdentityMap();
这提供了当前管理的所有实体的列表。这不是我想要的,但我可以使用它。您尝试过(插入)+预更新(更新)吗?如果是,您遇到了什么问题。我遇到了-问题是,如果实体持久化状态没有变化,这些不会被解雇。这是避免不必要写入的原则的一个功能,但在这种情况下,它会阻碍我的努力。我目前正在使用:公共函数onFlush(OnFlushEventArgs$args){$args->getEntityManager()->getUnitOfWork()->getIdentityMap();
这给出了当前管理的所有实体的列表。这不是我想要的,但我可以使用它。