1

我有一个 SaaS Symfony2 项目,其中包含许多捆绑包和一个在 config.yml 中定义的全局数据库连接。现在让我们说,一个特定的客户想要一些自定义功能。因为我希望它与我的主项目集成,所以我决定使用该客户端的特定代码创建一个新包。该捆绑包可能需要一些新的数据库表,但因为它们特定于该客户端,所以我用它们创建了一个新数据库。

然后我需要定义一个新的学说连接。与其将所有连接设置都放在主 config.yml 中(如果我有 10 个带有特定捆绑包的客户端,这可能会变得非常混乱),有什么方法可以在客户端捆绑包内的某个配置文件中定义它?这样我就可以轻松地将所有客户端代码和配置封装在包中

我认为可能使用依赖注入组件并使用编译器通行证根据捆绑包中定义的一些参数文件创建新的数据库连接,但我不知道该怎么做。我还需要定义一些与连接(Doctrine Extensions)相关的监听器,这使得任务更加困难。

我想我在每个请求中只有一个“客户端包”处于活动状态,所以也许我可以定义一些“客户端”连接,然后在运行时更改连接字符串?(在这种情况下,我需要确保只加载正确的客户端包,基于子域或其他东西)。

谢谢您的帮助。

4

2 回答 2

0

您可以从 /vendor/doctrine-bundle/Doctrine/Bundle/DoctrineBundle/DependencyInjection/ 中的 DoctrineExtension.php 开始

它包含两个方法 loadDbalConnection() 和 loadOrmEntityManager(),它们加载配置值并构建 Connection 和 Mappings 对象。您可以从该类中复制所需的代码。

于 2014-03-24T22:49:46.487 回答
-1

查看 \src\Acme\DemoBundle\DependencyInjection\AcmeDemoExtension.php 和文件夹 \src\Acme\DemoBundle\Resources\config* 使用它,您可以加载 yml 或 xml 文件并设置数据库连接和所需的映射。

于 2013-08-04T18:36:54.467 回答