将@session注入EntityRepository

问题描述 投票:2回答:3

我想在Symfony2项目中覆盖默认的Doctrine\ORM\EntityRepository类,以便可以访问@session服务,以便所有存储库都可以访问某个会话变量(如果已设置。)>

在调查中,它看起来不像我希望的那么简单,因为EntityRepository是从Doctrine\ORM\EntityManager内部实例化的,而该类本身是使用静态“ create”方法实例化的。

我遵循Injecting dependency into entity repository中的答案,但在实际实现自定义管理器类时遇到了障碍(特别是答案的作者说:“但是,由于您正在创建自定义实体管理器,因此可以将其连接到服务容器并注入所需的任何依赖项”)。>

我已经定义了覆盖的EntityManager类,并具有覆盖的“创建”功能,并且也覆盖了“ getRepository”功能。我相信正是在此函数中,我需要将会话添加到存储库中,因为它是在覆盖的EntityRepository类上使用“ setSession”方法创建的,但是我不确定如何在会话中将会话实际进入管理器。首先,在Connection $conn, Configuration $config, EventManager $eventManager“ ormLoad”方法中提供了EntityManager类(Symfony\Bundle\DoctrineBundle\DependencyInjection\DoctrineExtension)的其他构造函数参数。

我也指定了

doctrine.orm.entity_manager.class: Me\MyBundle\Doctrine\ORM\EntityManager

在我的config.yml文件中。

创建存储库时,如何让Symfony使用我的自定义EntityManager类,并将会话也注入其中?

我想在Symfony2项目中覆盖默认的Doctrine \ ORM \ EntityRepository类,以便可以访问@session服务,以便我的所有存储库都可以访问特定的...

symfony doctrine
3个回答
3
投票
Florian,

here

,介绍了如何通过服务创建存储库:

1
投票
我最终做了一些不同的事情:

0
投票
在Symfony 4+中,您可以将其设置为ServiceEntityRepository,并且通过自动装配无需进行任何[[services.yaml
© www.soinside.com 2019 - 2024. All rights reserved.