使用Symfony 4或5,我试图让一个应用程序通过实体管理器透明地与条令对话,使用默认EM,但根据区域设置更改连接。
这个想法是为了了解如何在运行时检查区域设置,并决定用于整个请求的正确数据库连接。也就是说,$doctrine->getEntityManager()
应该返回一个具有正确连接的管理器,供存储库使用,也供处理身份验证和连接到DB的任何其他服务的防火墙使用。
当运行命令指定要使用的连接时,应该可以使用BONUS。
详细信息:
-Symfony 4或更高版本
-PHP 7>
-每个国家都使用相同的型号
-对于http请求,区域设置在url中
-所有数据库的url都在env文件中
我自己的尝试:
如果尝试使用条令配置扩展DoctrineDBALConnection
以制作包装器,但未能找到更改所有连接设置的方法。(将URL更改为master和slave DB(用于请求和控制台。
非常感谢任何帮助
这不是解决问题的直接方法,但可能会有所帮助。
当我想用相同的实体和模型建立不同的数据库连接时,我本可以使用多个连接,但这比其他任何事情都更有压力。我不能包括自动测试和调试是可怕的。
我去年的解决方案是使用相同的代码,但配置不同:
- 一个隐藏在git或私有存储库中的代码库
- 每个数据库连接的不同配置文件
因此,现在我们已经分离了处理数据库连接的逻辑,并且不能重用实体和模型。
在这之后,我开始使用docker。所以我用php:7.4-fpm创建了一个镜像。现在我可以用git存储库中提供的默认配置启动这个容器了。
如果我想更改数据库连接,我只需将一个外部.env.local装载到映像中,并将其作为容器启动。
现在我必须使用容器,一个带有默认配置,一个具有特定数据库连接。两者都是并行运行的,可以通过不同的数据库连接进行自动测试。
希望这对你有帮助。