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

时间:2013-01-16 21:58:41

标签: symfony doctrine-orm

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

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

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

如果你想知道为什么?我在一个函数中使用了一个锁机制,我正在尝试使用register_shutdown_function()删除该锁以防万一发生致命错误,使用php内置的mysql或pdo函数,因为在那时,大多数框架已经失效。

2 个答案:

答案 0 :(得分:1)

如果您无法检索它,那么您也不会有数据库连接。

来自测试环境的参数不会在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%"
....

您使用的所有其他环境也是如此。

答案 1 :(得分:1)

如果您需要通过内核对象访问Container和Connection,请使用以下代码:

$connection = $kernel->getContainer()->get('doctrine')->getConnection();

如果你需要获取并设置容器参数,你可以使用下面的代码:

$container->setParameter('database_name', 'xyz');
$db_password = $container->getParameter("database_password");