我有一个需要运行的原始 sql 查询,但每个环境中的数据库名称都会发生变化(实时:db,dev db_test)
我需要从 databases.yml 文件中获取当前数据库名称。
我怎样才能得到当前的数据库名称?
我正在使用 Propel ORM
最初我认为这很容易通过sfPropelDatabase::getConfiguration()
但返回一个数组。因此,我必须解析结果以获取数据,我认为可能有比这更好的方法:
$propel_config = sfPropelDatabase::getConfiguration();
preg_match('/dbname=([^;]+);/', $propel_config['propel']['datasources']['propel']['connection']['dsn'], $matches);
echo $matches[1];
有人有更好的吗?
以下代码在 Propel2 中有效——与接受的答案基本相同。
$mgr = \Propel\Runtime\Propel::getConnectionManager($connectionId);
$dsn = $mgr->getConfiguration()['dsn'];
preg_match('/dbname=([^;]+)/', $dsn, $matches);
echo $matches[1];