実行する必要がある未加工の SQL クエリがありますが、データベース名は環境ごとに変わります (ライブ: db、dev db_test)
database.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];