Joã*_*cal 5 php doctrine symfony doctrine-orm
我有一个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(
'<error>[!] %s (%s) the post could not be created "%s"</error>',
get_class($e),
date('Y-m-d H:i:s'),
$e->getMessage()
));
return false;
} catch (\Exception $e) {
$this->getDoctrine()->getConnection()->rollback();
$output->writeln(sprintf(
'<error>[!] %s (%s) the post could not be created "%s"</error>',
get_class($e),
date('Y-m-d H:i:s'),
$e->getMessage()
));
return false;
}
Run Code Online (Sandbox Code Playgroud)
怎么解决?
您可以像这样手动重置您的实体管理器:
//...
} catch (\Doctrine\DBAL\DBALException $e) {
$manager = $this->getDoctrine()->getManager();
if (!$manager->isOpen()) {
$manager = $manager->create(
$manager->getConnection(),
$manager->getConfiguration()
);
}
$output->writeln(sprintf(
'<error>[!] %s (%s) the post could not be created "%s"</error>',
get_class($e),
date('Y-m-d H:i:s'),
$e->getMessage()
));
return false;
}
//...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11204 次 |
| 最近记录: |