我想覆盖我的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