У меня есть ответы сущностей, и я использую для них фильтр softdeleted, и когда я удаляю сущность в каком-то действии, все нормально, я удалил в datetime, но когда я пытаюсь удалить эту сущность в OnFlushEvent, моя сущность исчезла из БД, почему?
public function onFlush(OnFlushEventArgs $args)
{
$em = $args->getEntityManager();
$uow = $em->getUnitOfWork();
$em->getFilters()->enable('softdeleteable');
foreach ($uow->getScheduledEntityUpdates() as $entity) {
if ($entity instanceof Questions) {
$existAnswers = $this->container->get('app.repository.question_answers')
->findOneBy(['questions' => $entity]);
$em->remove($existAnswers);
}
}
}
юридическое лицо
* @Gedmo\SoftDeleteable(fieldName = "deletedAt")
*/
class QuestionAnswers
служба конфигурации
app.doctrine_listener:
class: AppBundle\Listener\DoctrineListener
calls:
- [setContainer, ['@service_container']]
tags:
- { name: doctrine.event_subscriber, connection: default }
Я проверил, этот фильтр включен, я пытаюсь включить принудительно, но ничего не помогло
конечно, обновленный вопрос




Думаю, проблема может быть связана с приоритетом подписчиков.
На самом деле кажется, что также SoftDeleteableListener реализует подписчика, который собирает объекты для мягкого удаления, используя событие onFlush(), как мы можем видеть здесь. Поэтому, если ваше событие запускается после события, которое можно удалить, ваши сущности обычно удаляются из Doctrine.
Чтобы избежать этого, я бы установил priotity на вашем подписчике, чтобы запускать ваши события раньше, чем события SoftDeleteableListener.
app.doctrine_listener:
class: AppBundle\Listener\DoctrineListener
calls:
- [setContainer, ['@service_container']]
tags:
- { name: doctrine.event_subscriber, connection: default, priority: -256 }
Не могли бы вы добавить определение вашей службы прослушивания?