Допустим, у меня есть сущность 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
, который отслеживает все объекты.Он также использует ту же доктрину, что и приложение.На onFlush
этот слушатель отправит изменения в потоковую службу AWS.
Моя проблема, например, в том, что существует запись, которая будет обновлена.Конечно, сработает two listeners
(ListenerA
и ListenerB
).
Идентификатор продукта: 1 title: 'some title' property1: 1 property2: 1 property3: 1 visible: 1
Например, бизнес-правило заключается в том, что сущность была изменена или обновлена, и если property1, property2 и property3 имеют значение true, видимость Продукта должна быть установлена в значение true, в противном случае это будет значение false. .Это правило было установлено для прослушивателя сущностей.
Так что, если я, например, изменю property3
= 0, тогда visible
должно теперь быть false
.
Но, как я уже упоминал, тамтакже является другим слушателем ListenerB
в пакете PHP, который отслеживает также изменения в этом объекте.
Проблема в том, что когда ListenerB
в этом пакете PHP был запущен, он не получает обновлены изменения свойства Product
visible
, которое было вызвано ListenerA
(реализует бизнес-логику).
Например, visibility
Product
равно 1 и ListenerB
было выдвинуто в поток, но затем ListenerA
изменило его на 0 для некоторой логики.
Данные, переданные в поток, не были обновленным значением.
Мне нужно отследить последние изменения, сделанные на ListenerA
, прежде чем нажимать изменения на ListenerB
.
Скорее всего, у меня ограничен доступ к ListenerB
.У меня есть полный доступ для редактирования кода на ListenerA
.
Есть ли у вас какие-либо предложения или обходные пути для этого?
Буду признателен за любую помощь.