Zend Framework - Doctrine2 - 将EntityManager存储为全局变量?

时间:2012-02-14 15:27:39

标签: zend-framework doctrine-orm

我正在构建我的第一个Zend / Doctrine项目,并希望能够使用以下内容访问我的控制器中的Doctrine2实体管理器:

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

有没有办法做到这一点,或者当Doctrine引导时我应该把它放在Zend_Registry中吗?

1 个答案:

答案 0 :(得分:1)

在某种程度上,它取决于你如何引导Doctrine。结果是将EntityManager作为资源存储在Bootstrap中,然后在控制器中检索它。

例如,如果您在方法Bootstrap::_initDoctrine()中实例化实体管理器,则返回此实例会将其作为密钥'doctrine'下的资源存储在引导程序中。然后,在控制器的init()方法中,您可以:

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

或者,如果您使用Bisna application resource plugin for Doctrine,那么您必须再向下推一级才能获得实体经理:

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