我想覆蓋我的Symfony2項目中的默認Doctrine\ORM\EntityRepository
類,以便我可以訪問@session
服務,以便我的所有存儲庫都可以訪問某個會話變量(如果已設置)。將@session注入EntityRepository
在調查中,它似乎並不像我所希望的那麼簡單,因爲EntityRepository是從Doctrine\ORM\EntityManager
中實例化的,並且此類使用靜態「create」方法實例化。
我跟着Injecting dependency into entity repository的答案,但在實際執行自定義管理器類(具體在哪裏,答案的作者說,「但既然你正在做一個自定義的實體管理器,你就可以將它的服務容器都創下了路障並注入你需要的任何依賴關係「)。
我定義了我重寫的EntityManager類,並重寫了「create」函數並重寫了「getRepository」函數。正是在這個函數中,我相信我需要將會話添加到Repository中,因爲它是使用重寫的EntityRepository類中的「setSession」方法創建的,但我不確定如何將會話實際導入到管理器中第一個地方,因爲EntityManager類的其他構造函數參數(Connection $conn, Configuration $config, EventManager $eventManager
)在Symfony\Bundle\DoctrineBundle\DependencyInjection\DoctrineExtension
「ormLoad」方法中提供。
我也以我的config.yml文件中指定
doctrine.orm.entity_manager.class: Me\MyBundle\Doctrine\ORM\EntityManager
。
如何在創建存儲庫時讓Symfony使用我的自定義EntityManager類,並將該會話注入到它中?
這就是我想要做的事情,但我需要讓我的自定義EntityManager類成爲默認的EntityManager,所以我不知道如何去告訴Doctrine使用我的而不是他們的 – tanGee