2015-04-02 55 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