Кемеровские программисты php общаются здесь
Anonymous
Как повторно открыть Doctrine Entity Manager после DBALException
Сообщение
Anonymous » 21 июн 2024, 15:43
У меня есть консольное приложение с Symfony 2, скрипт запускается на cron (терминал). Но после \Doctrine\DBAL\DBALException скрипт выдает исключение N \Doctrine\ORM\ORMException с сообщением «EntityManager закрыт».
Это часть сценария:
Код: Выделить всё
try {
$this->getDoctrine()->getConnection()->beginTransaction();
// ...
$manager = $this->getDoctrine()->getManager();
$entity = new Post();
$entity
->setAuthor($author)
->setTitle($title)
->setContent($content)
;
$manager->persist($entity);
$manager->flush();
$this->getDoctrine()->getConnection()->commit();
return $entity->getId();
} catch (\Doctrine\DBAL\DBALException $e) {
$this->getDoctrine()->resetManager();
$output->writeln(sprintf(
'[!] %s (%s) the post could not be created "%s"',
get_class($e),
date('Y-m-d H:i:s'),
$e->getMessage()
));
return false;
} catch (\Exception $e) {
$this->getDoctrine()->getConnection()->rollback();
$output->writeln(sprintf(
'[!] %s (%s) the post could not be created "%s"',
get_class($e),
date('Y-m-d H:i:s'),
$e->getMessage()
));
return false;
}
Как это исправить?
Подробнее здесь:
https://stackoverflow.com/questions/271 ... lexception
1718973814
Anonymous
У меня есть консольное приложение с Symfony 2, скрипт запускается на cron (терминал). Но после \Doctrine\DBAL\DBALException скрипт выдает исключение N \Doctrine\ORM\ORMException с сообщением «EntityManager закрыт». Это часть сценария: [code]try { $this->getDoctrine()->getConnection()->beginTransaction(); // ... $manager = $this->getDoctrine()->getManager(); $entity = new Post(); $entity ->setAuthor($author) ->setTitle($title) ->setContent($content) ; $manager->persist($entity); $manager->flush(); $this->getDoctrine()->getConnection()->commit(); return $entity->getId(); } catch (\Doctrine\DBAL\DBALException $e) { $this->getDoctrine()->resetManager(); $output->writeln(sprintf( '[!] %s (%s) the post could not be created "%s"', get_class($e), date('Y-m-d H:i:s'), $e->getMessage() )); return false; } catch (\Exception $e) { $this->getDoctrine()->getConnection()->rollback(); $output->writeln(sprintf( '[!] %s (%s) the post could not be created "%s"', get_class($e), date('Y-m-d H:i:s'), $e->getMessage() )); return false; } [/code] Как это исправить? Подробнее здесь: [url]https://stackoverflow.com/questions/27152969/how-to-reopen-doctrine-entity-manager-after-dbalexception[/url]