0

実行する必要がある未加工の SQL クエリがありますが、データベース名は環境ごとに変わります (ライブ: db、dev db_test)

database.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 に答える