0

我有一个需要运行的原始 sql 查询,但每个环境中的数据库名称都会发生变化(实时:db,dev db_test)

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

我怎样才能得到当前的数据库名称?

我正在使用 Propel ORM

4

2 回答 2

2

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

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

有人有更好的吗?

于 2010-05-14T23:20:14.437 回答
0

以下代码在 Propel2 中有效——与接受的答案基本相同。

$mgr = \Propel\Runtime\Propel::getConnectionManager($connectionId);
$dsn = $mgr->getConfiguration()['dsn'];
preg_match('/dbname=([^;]+)/', $dsn, $matches);
echo $matches[1];
于 2015-05-11T19:17:17.377 回答