我正在对一个实体进行查询,但当然我被要求将doctrine entityManager实例化为我的严肃问题:
实例化要在实体中使用的EntityManager。
请原谅我的英语,我使用谷歌真相XD,因为没有用西班牙语与ZF2社区和Doctrine2会面。
答案 0 :(得分:1)
如果我理解你的问题,你想在你的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');