doctrine error The EntityManager is closed. Ошибка - подключение к базе закрыто

Текст ошибки

После длительной отладки формы и множественных перезагрузок страницы, наконец я получила такую ошибку:

The EntityManager is closed.

В первые секунды я решила - всё - я достала EntityManager. Он устал, и уходит XD

Но, отогнав от себя нелепые олицетворения, всё же пошла искать решение проблемы.

Решение

Суть ошибки заключается в том, что связь с БД была прервана в середине скрипта, но после этого поступал ещё один запрос.

Как было конкретно у меня:

  • EntityManager инициализировался как поле класса-сервиса
  • В процессе скрипта вызывались 2 метода этого класса, которые оба заканчивались строкой:
    $this->entityManager->flush();

    В первом соединение и разрывалось, а второй уже выбрасывал ошибку.

Мне пришлось немного переписать логику приложения, объединив эти методы.

Чтобы проверить, где соединение открыто, а где уже нет, можно использовать метод:

$this->em->isOpen();

И не давите на EntityManager :)

Источники