在Symfony 1.2中如何从Propel中的database.yml文件中获取当前数据库名称?

时间:2010-05-14 21:09:35

标签: database symfony1 propel

我需要运行一个原始sql查询,但每个环境中的数据库名称都会更改(live:db,dev db_test)

我需要从databases.yml文件中获取当前数据库名称。

如何获取当前数据库名称?

我正在使用Propel ORM

2 个答案:

答案 0 :(得分:2)

最初我认为通过sfPropelDatabase::getConfiguration()这很容易,但会返回一个数组。因此,我不得不解析结果以获取数据,我认为可能有更好的方法:

$propel_config = sfPropelDatabase::getConfiguration();
preg_match('/dbname=([^;]+);/', $propel_config['propel']['datasources']['propel']['connection']['dsn'], $matches);
echo $matches[1];

谁有更好的东西?

答案 1 :(得分:0)

以下代码适用于Propel2 - 与接受的答案基本相同。

$mgr = \Propel\Runtime\Propel::getConnectionManager($connectionId);
$dsn = $mgr->getConfiguration()['dsn'];
preg_match('/dbname=([^;]+)/', $dsn, $matches);
echo $matches[1];