Php 原则2:调用persist时始终激发的生命周期事件

Php 原则2:调用persist时始终激发的生命周期事件,php,orm,doctrine-orm,doctrine,Php,Orm,Doctrine Orm,Doctrine,我是否可以订阅一个Doctrine 2生命周期事件,每当我调用实体上的persist()和flush()时,该事件总是会触发 我希望在用户“保存”某个实体时,基于该实体生成一个缓存文件,而不管Doctrine是否实际发出SQL update语句 我正在考虑的解决方法是添加一个总是与数据库不同步的额外字段,以强制持久化/更新,但我更喜欢总是调用的事件 顺便说一句: 执行实体持久化的代码在第三方包中,如果可以避免的话,我宁愿不破解它 您是否尝试过(插入)+预更新(更新)?如果是的话,你遇到了什么问

我是否可以订阅一个Doctrine 2生命周期事件,每当我调用实体上的
persist()
flush()
时,该事件总是会触发

我希望在用户“保存”某个实体时,基于该实体生成一个缓存文件,而不管Doctrine是否实际发出SQL update语句

我正在考虑的解决方法是添加一个总是与数据库不同步的额外字段,以强制持久化/更新,但我更喜欢总是调用的事件

顺便说一句:

  • 执行实体持久化的代码在第三方包中,如果可以避免的话,我宁愿不破解它

您是否尝试过(插入)+预更新(更新)?如果是的话,你遇到了什么问题。我遇到了-问题是如果实体持久化状态没有变化,这些不会被解雇。这是避免不必要的写入的原则的一个特性,但在本例中它阻碍了我的努力。我目前使用的是:
public function onFlush(OnFlushEventArgs$args){$args->getEntityManager()->getUnitOfWork()->getIdentityMap();
这提供了当前管理的所有实体的列表。这不是我想要的,但我可以使用它。您尝试过(插入)+预更新(更新)吗?如果是,您遇到了什么问题。我遇到了-问题是,如果实体持久化状态没有变化,这些不会被解雇。这是避免不必要写入的原则的一个功能,但在这种情况下,它会阻碍我的努力。我目前正在使用:
公共函数onFlush(OnFlushEventArgs$args){$args->getEntityManager()->getUnitOfWork()->getIdentityMap();
这给出了当前管理的所有实体的列表。这不是我想要的,但我可以使用它。