2015-04-02 72 views
0

我针对实体的查询,但当然我问实例学说的EntityManager我严肃的问题:ZF2 +查询实体Doctrine2

由于实例化的EntityManager在实体使用。

请原谅我的英语,我使用谷歌真相XD,因为没有在西班牙语中使用ZF2社区和Doctrine2。

回答

1

如果我理解了你的问题,你想在你的Doctrine实体中获得entityManager,对吧?

我不认为在您的Doctrine实体中使用EntityManager是个好主意。但为此,您需要首先获取实体类中的服务管理器实例。

默认情况下,Zend Framework的MVC注册一个初始化,将注入的ServiceManager的实例,这是Zend\ServiceManager\ServiceLocatorInterface的实现,为实现Zend\ServiceManager\ServiceLocatorAwareInterface

教义任何类,我们必须让服务经理可在实体中使用。所以你必须为每个实体实现ServiceLocatorAwareInterface或者更简单的创建一个实现Zend\ServiceManager\ServiceLocatorAwareInterface的类,然后简单地让需要访问服务管理器的实体继承这个类。

这里是一个很好的职位上HOW TO INJECT ZF2 SERVICE MANAGER INTO DOCTRINE ENTITIES

以下这篇文章,你可以简单地得到您的实体内entityManager这样的:

$em = $this->getServiceLocator()->get('Doctrine\ORM\EntityManager'); 
+0

谢谢,这正是我需要和它的作品。 现在你告诉我这不是好的做法,所以现在我有另一个问题。 如果我不能从实体调用EntityManager,我应该去哪里查询。这个咨询应该在司机还是在哪里? – 2015-04-02 18:26:38

+0

很高兴它可以帮助;)如果这解决了您的问题,请将问题标记为已接受。对于你的问题,你可以看看这个:http://stackoverflow.com/questions/4108291/using-entitymanager-inside-doctrine-2-0-entities#answer-4109458。 – blackbishop 2015-04-02 18:34:01