Я уверен, что должен быть лучший способ, но оказывается, что вы можете получить DSN из sfDatabaseManager. Поэтому, пока я не найду правильный путь, я расширил 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');
Просто нужно взорвать / regex на dsn, чтобы получить dbname.
Я ЛЮБЛЮ это, если кто-то напишет, чтобы рассказать мне, как это мусор, но, конечно, только если у них есть лучшее решение! Я посмотрел, посмотрел и посмотрел ....