2011-11-28 146 views
1

有沒有一種簡單的方法從實體的類方法中獲取Doctrine的實體管理器?我可以從實體的類方法中獲取EntityManager嗎?

<?php 

/** @Entity */ 
class MyEntity { 
    /** @Id @GeneratedValue @Column(type="integer") */ 
    protected $id; 

    [...] 

    public function someFunction() { 
    // Is there any way to get Doctrine's EntityManager in here? 
    } 
} 
+3

你不能這樣做。你的實體不應該依賴於EntityManager或Repository。 – meze

+0

忘記我之前的評論:你爲什麼需要在一個實體的EM? – meze

+0

那麼,我打算在某些情況下創建並堅持另一個對象,但我想最好在別處創建它。我確實設法通過將它存儲在$ GLOBALS中來獲得EM,但我會嘗試重構。 – Matt

回答

4

你真的不應該這樣做。數據映射器ORM(如Doctrine)背後的想法是,您的實體只是對持久層一無所知的普通舊對象。如果你發現自己想在你的實體內部添加一個EntityManager,那麼這是一個信號,你應該創建一個某種服務類。

這就是說,學說相當靈活。例如,如果你非常喜歡,你可以使用Doctrine as the foundation for an ActiveRecord-style ORM

但是,除了非常具體的用例外,我不會推薦它。

+0

好的,謝謝,我會重構代碼... – Matt

相關問題