Zend Framework - Doctrine2 - Сохранить EntityManager как глобальную переменную? - PullRequest
0 голосов
/ 14 февраля 2012

Я строю свой первый проект Zend / Doctrine и хотел бы иметь возможность получить доступ к моему Doctrine2 Entity Manager в моих контроллерах, используя что-то вроде:

$this->em->persist($item);

Есть ли способ сделать это, илия должен поместить его в Zend_Registry, когда Doctrine загружается?

1 Ответ

1 голос
/ 14 февраля 2012

В какой-то степени это зависит от того, как именно вы запускаете доктрину. В результате EntityManager будет сохранен в качестве ресурса в Bootstrap, а затем получен в контроллере.

Например, если у вас есть метод Bootstrap::_initDoctrine(), в котором вы создаете экземпляр менеджера сущностей, то при возврате этого экземпляра он сохраняется в начальной загрузке как ресурс под ключом 'doctrine'. Тогда в методе init() вашего контроллера вы можете получить:

$this->em = $this->getInvokeArg('bootstrap')->getResource('doctrine');

В качестве альтернативы, если вы используете плагин приложения для приложений Bisna для Doctrine , то вам придется нажать еще один уровень вниз, чтобы получить диспетчер сущностей:

$this->em = $this->getInvokeArg('bootstrap')->getResource('doctrine')->getEntityManager();
...