【发布时间】:2018-10-10 16:57:30
【问题描述】:
假设我有一个实体 Product,我的应用程序中有一个实体 ListenerA(preUpdate、prePersist)。
class ListenerA {
public function prePersist(LifecycleEventArgs $args)
{
...
}
public function prePersist(LifecycleEventArgs $args)
{
...
}
假设Product 实体有一个属性visible (bool),对于该实体的每次更新,visible 可能会根据某些逻辑更改为 1 或 0。
在那个 Symfony 应用程序中,还有一个来自私有存储库的 PHP 包。这个包负责跟踪所有实体上的实体更改。它有一个ListenerB 跟踪所有实体。它还使用应用程序中使用的相同 Doctrine。在onFlush,此侦听器会将更改推送到 AWS 流服务中。
我的问题是例如有一条记录将被更新。
当然会触发two listeners(ListenerA 和ListenerB)。
产品 编号:1 标题:'一些标题' 属性1:1 属性2:1 属性3:1 可见:1
例如,业务规则是实体发生更改或更新时,如果 property1、property2 和 property3 为 true,则 Product 的可见性必须设置为 true,否则为 false。。该规则是在实体侦听器上设置的。
因此,例如,如果我更改 property3 = 0,那么 visible 现在必须是 false。
但正如我所提到的,PHP 包上还有另一个侦听器 ListenerB,它也跟踪该实体的更改。
问题在于,当该 PHP 包上的 ListenerB 被触发时,它不会获得由 ListenerA 触发的 Product 的 visible 属性上的 更新 更改(实现业务逻辑)。
例如,Product 的 visibility 是 1,它被 ListenerB 推送到流式传输,但随后 ListenerA 将其更改为 0一些逻辑。
推送到流的数据不是更新的值。
在推送ListenerB 上的更改之前,我需要跟踪在ListenerA 上所做的最后更改。
很可能我对ListenerB 的访问权限有限。我拥有在ListenerA 上编辑代码的完全权限。
您对此有什么建议或解决方法吗?
我将不胜感激。
【问题讨论】:
标签: symfony