@anboo

Doctrine помечает транзакции как rollback?

Код:
$this->entityManager->beginTransaction();
$this->entityManager->persist($entityA);
$this->entityManager->flush();
...
$this->entityManager->rollback();

$this->entityManager->persist($entityB);
$this->entityManager->flush();


Transaction commit failed because the transaction has been marked for rollback only


После того как вызываю роллбек транзакции доктрины она помечает транзакцию rollbackOnly внутри и дальше невозможно вызвать у em функцию commit ни на какой из транзакций, считай как будто EM закрылся и его использовать больше нельзя, если случился rollback.
  • Вопрос задан
  • 1292 просмотра
Пригласить эксперта
Ответы на вопрос 1
@abubekov
После rollback можно сделать так:
if (!$this->entityManager->isOpen()) {
                $entityManager = $this->entityManager->create($this->entityManager->getConnection(), $this->entityManager->getConfiguration(), $this->entityManager->getEventManager());
                $this->serviceManager->setAllowOverride(true);
                $this->serviceManager->setService('entityManager', $entityManager); //Имя сервиса возьмите то которое у вас используется в фабрике или в конфиге доктрины
                $this->serviceManager->setAllowOverride(false);
                $this->entityManager = $this->serviceManager->get('entityManager');
            }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы