Я регистрирующий Учение в Silex таким образом:Silex Доктрина «EntityManager закрыта» после того, как доктрина Exception
// Doctrine
$this->register(new DoctrineServiceProvider(), array(
'db.options' => $this['config']['doctrine']['db.options']
));
$this->register(new DoctrineOrmServiceProvider());
$this['orm.em.options'] = $this['config']['doctrine']['orm.em.options'];
Если я вставить скопированную строку, то я получаю это исключение:
Целостности нарушение ограничений: 1062 Дублирующийся ввод
Я выбрал это исключение, используя try/catch. Если позже я попытаюсь снова использовать Доктрину, теперь всегда отображается это исключение:
EntityManager закрыт.
Если я пытаюсь перезагрузить EntityManager, выполнив следующие действия (The EntityManager is closed):
if (!$app['orm.em']->isOpen()) {
$app['orm.em'] = $app['orm.em']->create(
$app['orm.em']->getConnection(), $app['orm.em']->getConfiguration(), $app['orm.em']->getEventManager()
);
}
Но теперь это исключение показано:
Невозможно переопределить замороженную службу "orm.em"
Как я могу использовать провайдера Doctrine в Силексе после исключения Doctrine is ha ppened?
Спасибо.
Вы не можете. За исключением исключения, менеджер закрывается по дизайну. Если вам действительно нужно получить доступ к базе данных после такого исключения, создайте два менеджера сущностей и используйте их исключительно для очистки после исключения. В противном случае перенаправляйтесь и переходите. – Cerad
Возможный дубликат [The EntityManager закрыт] (http://stackoverflow.com/questions/14258591/the-entitymanager-is-closed) – olibiaz
Почему вы не проверяете, существует ли запись, а затем только вставляете данные, если нет существующих запись. – sonam