如何在symfony2中获取用于dbal连接的密码?

如何在symfony2中获取用于dbal连接的密码?,symfony,doctrine-orm,Symfony,Doctrine Orm,我想在symfony2中检索doctrine2 dbal连接当前使用的密码 如果我使用$kernel->getContainer()->getParameter('database_password'),我可以找到parameters.yml中定义的密码,但是如果我为某些环境定义了不同的密码(例如,在config_test.yml中),parameters.yml中的数据是无用的 现在,如果我查看$kernel->getContainer()->getParameterBag()->all(),

我想在symfony2中检索doctrine2 dbal连接当前使用的密码

如果我使用
$kernel->getContainer()->getParameter('database_password')
,我可以找到parameters.yml中定义的密码,但是如果我为某些环境定义了不同的密码(例如,在config_test.yml中),parameters.yml中的数据是无用的

现在,如果我查看
$kernel->getContainer()->getParameterBag()->all()
,我仍然找不到它


万一你想知道为什么?我在一个函数中使用了一个锁机制,我试图使用php内置的mysql或pdo函数,在出现致命错误时,使用
register\u shutdown\u function()
删除该锁,因为在这一点上,大部分框架都已关闭。

如果无法检索它,那么您也将没有DB连接

测试环境中的参数不会加载到dev、prod、。。。环境 在重写的情况下,请在parameters.yml中定义所有连接参数

//parameters.yml
database_prod_name: prod
database_prod_user: prod_user
database_prod_password: prod_password

database_dev_name: dev
database_dev_user: dev_user
.....

//config_prod.yml
doctrine:
    dbal:
        dbname:   "%database_prod_name%"
        user:     "%database_prod_user%"
        password: "%database_prod_password%"
....

这同样适用于您使用的所有其他环境。

如果您需要通过内核对象访问容器和连接,请使用以下代码:

$connection = $kernel->getContainer()->get('doctrine')->getConnection();
$container->setParameter('database_name', 'xyz');
$db_password = $container->getParameter("database_password");
如果需要获取和设置容器参数,可以使用以下代码:

$connection = $kernel->getContainer()->get('doctrine')->getConnection();
$container->setParameter('database_name', 'xyz');
$db_password = $container->getParameter("database_password");

我想保持这种状态是最好的做法。谢谢