我確定一定有更好的方法,但事實證明你可以從sfDatabaseManager獲取DSN。所以,直到我找到一個妥善的辦法,我已經擴展sfDatabaseManager添加以下getDsn方法
class sfDatabaseManagerExt extends sfDatabaseManager
{
public function getDsn($conn)
{
$db = $this->getDatabase($conn);
$dsn = $db->getParameter('dsn');
return $dsn;
}
}
然後在模型中,我需要爲特定連接和環境得到數據庫名稱:
$appConfig= ProjectConfiguration::getApplicationConfiguration(sfConfig::get('sf_app'), sfConfig::get('sf_env'), false);
$dbManager= new sfDatabaseManagerExt($appConfig);
$dsn=$dbManager->getDsn('doctrine');
只需要在dsn上展開/ regex然後獲取dbname。
我會喜歡它,如果有人會張貼告訴我這是多麼垃圾,但當然只有當他們有更好的解決方案!我已經看過了,看着看着....
http://stackoverflow.com/questions/2837659/in-symfony-1-2-how-can-i-get-the-current-database-name-from-the-database-yml-file –
I看到了這一點,但我希望在整個Doctrine_Manager :: getInstance() – petesiss
有一個更清晰的方式,而不是preg_match,所有'DoctrineManager'在這裏:http://www.tig12。net/downloads/apidocs/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Doctrine_Manager.class.html –