在symfony中查找当前的Doctrine数据库连接设置

rla*_*ter 12 doctrine symfony1 symfony

我需要知道symfony项目中的数据库名称和数据库服务器名称.如何在symfony中使用编程方式访问当前数据库连接设置(使用Doctrine)?

And*_*son 23

假设你有EntityManager $this->em

从Symfony2获取Doctrine数据库名称:

$this->em->getConnection()->getDatabase();
Run Code Online (Sandbox Code Playgroud)

从Symfony2获取Doctrine主机名(服务器名称):

$this->em->getConnection()->getHost();
Run Code Online (Sandbox Code Playgroud)

还有,你可以从连接诸如访问许多其它参数username,portpassword.有关详细信息,请参阅连接类

  • 请注意,自 2019 年 5 月以来,除了 getDatabase() 之外的所有内容都已被弃用,显然没有替换:https://github.com/doctrine/dbal/issues/3580,因此此问题的其他方法现在可能同样有效。 (6认同)

Fla*_*ask 6

例如:

foreach(Doctrine_Manager::getInstance()->getConnections() as $connection){
  $conn = $connection->getOptions();
  preg_match('/host=(.*);/', $conn['dsn'], $host);
  var_dump($host);
}
Run Code Online (Sandbox Code Playgroud)

  • 我认为有更优雅的方式,请参阅http://stackoverflow.com/a/26505585/744975 (2认同)