我有一个SaaS Symfony2项目,其中包含许多软件包和config.yml中定义的全局数据库连接。 现在让我们说,一个特定的客户想要一些自定义功能。因为我希望它与我的主项目集成,所以我决定使用该客户端的特定代码创建一个新的包。该捆绑包可能需要一些新的数据库表,但由于它们特定于该客户端,因此我使用它们创建一个新的数据库。
然后我需要定义一个新的学说连接。而不是将所有的conenction设置放在主config.yml中(如果我有10个客户端具有特定的捆绑包,这可能会变得非常混乱)有什么办法可以在客户端捆绑包内的某个配置文件中定义它?这样我就可以轻松地将所有客户端代码和配置封装在bundle
中我认为可能使用依赖注入组件并使用编译器传递来创建基于bundle中定义的某些参数文件的新数据库连接,但我不知道该怎么做。此外,我需要定义一些与连接相关的监听器(Doctrine Extensions),这使得任务更加困难。
我想我在每个请求中只有一个“客户端包”活动,所以也许我可以定义一些“客户端”连接,然后在运行时更改连接字符串? (在这种情况下,我需要确保只加载正确的客户端包,基于子域或其他东西)。
感谢您的帮助。
答案 0 :(得分:0)
你可以从/ vendor / doctrine-bundle / Doctrine / Bundle / DoctrineBundle / DependencyInjection /
中的DoctrineExtension.php开始它包含两个方法loadDbalConnection()和loadOrmEntityManager(),它们加载配置值并构建Connection和Mappings对象。 您可以从该类中复制所需的代码。
答案 1 :(得分:-1)
看一下\ src \ Acme \ DemoBundle \ DependencyInjection \ AcmeDemoExtension.php和文件夹\ src \ Acme \ DemoBundle \ Resources \ config *用它可以加载yml或xml文件并设置数据库连接和映射你需要。