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