【发布时间】:2012-02-14 15:27:39
【问题描述】:
我正在构建我的第一个 Zend/Doctrine 项目,并希望能够使用以下方式访问我的控制器中的 Doctrine2 实体管理器:
$this->em->persist($item);
有没有办法做到这一点,或者当 Doctrine 被引导时我应该把它放在 Zend_Registry 中?
【问题讨论】:
标签: zend-framework doctrine-orm
我正在构建我的第一个 Zend/Doctrine 项目,并希望能够使用以下方式访问我的控制器中的 Doctrine2 实体管理器:
$this->em->persist($item);
有没有办法做到这一点,或者当 Doctrine 被引导时我应该把它放在 Zend_Registry 中?
【问题讨论】:
标签: zend-framework doctrine-orm
在某种程度上,这取决于你如何引导 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();
【讨论】: