Php 基于子域动态更改实体管理器连接

Php 基于子域动态更改实体管理器连接,php,symfony,doctrine,symfony5,Php,Symfony,Doctrine,Symfony5,我正在尝试根据当前子域更改数据库连接。 到目前为止,我已经成功地创建了kernel.request侦听器并注入了实体管理器 服务.亚马尔 服务: app.listener.currentSubdomain: 类:App\EventListener\CurrentSubdomainListener 参数:['@doctrine.orm.entity_manager'] 标签: -{name:kernel.event_侦听器,event:kernel.request} CurrentSubdoma

我正在尝试根据当前子域更改数据库连接。 到目前为止,我已经成功地创建了kernel.request侦听器并注入了实体管理器

服务.亚马尔

服务:
app.listener.currentSubdomain:
类:App\EventListener\CurrentSubdomainListener
参数:['@doctrine.orm.entity_manager']
标签:
-{name:kernel.event_侦听器,event:kernel.request}
CurrentSubdomainListener.php


我猜这是一种多租户的情况,必须从数据库中检索连接信息?然后它有点像第二十二条军规,如果您需要数据库访问来查找它,那么一旦服务被实例化,您就不能替换它。您可以创建自己的别名,但我不确定这是否没有问题,因为我认为
ManagerRegistry
不会知道这个新经理。不确定您要做什么以及为什么。动态更改连接对我来说似乎不是个好主意。但是,我认为RequestEvent扩展了KerneleEvent,它有一个getRequest()方法,而Request有一个getHost()方法。这可能就是您正在寻找的。我猜这是一种多租户的情况,必须从数据库中检索连接信息?然后它有点像第二十二条军规,如果您需要数据库访问来查找它,那么一旦服务被实例化,您就不能替换它。您可以创建自己的别名,但我不确定这是否没有问题,因为我认为
ManagerRegistry
不会知道这个新经理。不确定您要做什么以及为什么。动态更改连接对我来说似乎不是个好主意。但是,我认为RequestEvent扩展了KerneleEvent,它有一个getRequest()方法,而Request有一个getHost()方法。这可能就是你要找的。