我需要运行一个原始sql查询,但每个环境中的数据库名称都会更改(live:db,dev db_test)
我需要从databases.yml文件中获取当前数据库名称。
如何获取当前数据库名称?
我正在使用Propel ORM
答案 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];