0

长时间的谷歌搜索我仍在寻找理想的解决方案,如何为捆绑包创建第二个数据库连接。我的系统由许多捆绑包组成,但对于其中一个捆绑包,我不仅需要连接到原始数据库,还需要连接到另一个(因此一次连接 2 个)。

我在我的包的 boot() 方法中尝试了这种方式:

$connectionFactory = $this->get('doctrine.dbal.connection_factory');
$connection = $connectionFactory->createConnection(array(
    'driver' => 'pdo_mysql',
    'user' => 'my_user',
    'password' => 'my_pass',
    'host' => '',
    'dbname' => 'my_dbname',
));
$this->container->set('doctrine.dbal.new_connection', $connection);
$em = $this->get('doctrine')->getEntityManager('new');

但它抛出了一个错误: 名为“new”的 Doctrine EntityManager 不存在。

如果我尝试向我的 config.yml 添加第二个连接并调用它

$this->get('doctrine')->getEntityManager('second_connection')

它抛出同样的错误。

编辑: 错误已消除。这是由于在教义.dbal.connections 中“映射”参数的错误设置引起的。

现在我想创建到由 bundle 处理的数据库的连接。而 app/config/config.yml 或其他配置不知道这个连接。简单地说,当用户打开新包的页面处理自己的连接和实体管理器时,它将自动创建新连接,您可以访问 2 个或更多数据库。因为首先是来自 app/config/config.yml 的原始文件,其次是捆绑连接。

我尝试在 doctrin.dbal 中的 app/config/config.yml 和在教义.orm 中的实体管理器中预定义 2 个数据库连接。这很好用,但正如我上面写的那样,这对我来说很不方便。

Exixts 另一个明智的解决方案,如何解决它?

4

1 回答 1

0

您可以在 app/config/parameters.ini 文件中配置它,例如http://symfony.com/doc/2.0/cookbook/doctrine/multiple_entity_managers.html

于 2013-01-31T17:16:51.713 回答