【发布时间】:2015-04-02 00:35:31
【问题描述】:
我正在对实体进行查询,但我当然被要求实例化学说 entityManager 我的严肃问题:
作为实例化 EntityManager 以在实体中使用。
对不起,我用的是 google truth XD,因为没有遇到 ZF2 社区和西班牙语的 Doctrine2。
【问题讨论】:
标签: zend-framework2 doctrine entity
我正在对实体进行查询,但我当然被要求实例化学说 entityManager 我的严肃问题:
作为实例化 EntityManager 以在实体中使用。
对不起,我用的是 google truth XD,因为没有遇到 ZF2 社区和西班牙语的 Doctrine2。
【问题讨论】:
标签: zend-framework2 doctrine entity
如果我理解你的问题,你想在你的 Doctrine 实体中获取entityManager,对吗?
我认为在 Doctrine 实体中使用 EntityManager 不是一个好主意。但为此,您首先需要在实体类中获取服务管理器的实例。
默认情况下,Zend Framework MVC 注册一个初始化器,它将 ServiceManager 实例(
Zend\ServiceManager\ServiceLocatorInterface的实现)注入到任何实现Zend\ServiceManager\ServiceLocatorAwareInterface的类中
对于 Doctrine,我们必须使服务管理器在实体中可用。因此,您必须为每个实体实现ServiceLocatorAwareInterface,或者更简单地创建一个实现Zend\ServiceManager\ServiceLocatorAwareInterface 的类,然后简单地使需要访问服务管理器的实体从该类继承。
这是HOW TO INJECT ZF2 SERVICE MANAGER INTO DOCTRINE ENTITIES上的一篇好帖子
按照这篇文章,您可以像这样在您的实体中简单地获取entityManager:
$em = $this->getServiceLocator()->get('Doctrine\ORM\EntityManager');
【讨论】: