我需要知道symfony項目中的數據庫名稱和數據庫服務器名稱。如何在symfony中(使用Doctrine)以編程方式訪問當前的數據庫連接設置?在symfony中查找當前Doctrine數據庫連接設置
10
A
回答
6
例如:
foreach(Doctrine_Manager::getInstance()->getConnections() as $connection){
$conn = $connection->getOptions();
preg_match('/host=(.*);/', $conn['dsn'], $host);
var_dump($host);
}
2
在DSN中DBNAME特定conexion:
databases.yml裏
all:
conexion1:
class: sfDoctrineDatabase
param:
dsn: 'mysql:host=localhost;dbname=basegestion1'
username: miusuario
password: ********
conexion2:
class: sfDoctrineDatabase
param:
dsn: 'mysql:host=localhost;dbname=baseestadisticas1'
username: miusuario
password: ********
在Action:
$mConexion1Options = Doctrine_Manager::getInstance()->getConnection('conexion1')->getOptions();
preg_match('/dbname=(.*)/', $mConexion1Options['dsn'], $mDbConexion1);
然後,dbna我是:
echo $mDbConexion1[1]; //basegestion1
1
使用此代碼:
$myConnection = Doctrine_Manager::getInstance()->getConnection('doctrine')->getOptions();
$dsnInfo = $this->parseDsn($myConnection['dsn']);
$settings = array();
$settings['dbUser'] = (string) $myConnection["username"];
$settings['dbPassword'] = (string) $myConnection["password"];
$settings['dbHost'] = (string) $dsnInfo["host"];
$settings['dbName'] = (string) $dsnInfo['dbname'];
private function parseDsn ($dsn)
{
$dsnArray = array();
$dsnArray['phptype'] = substr($dsn, 0, strpos($dsn, ':'));
preg_match('/dbname = (\w+)/', $dsn, $dbname);
$dsnArray['dbname'] = $dbname[1];
preg_match('/host = (\w+)/', $dsn, $host);
$dsnArray['host'] = $host[1];
return $dsnArray;
}
15
假設你有EntityManager的爲$this->em
獲取學說數據庫名稱從Symfony2的:
$this->em->getConnection()->getDatabase();
獲取做ctrine主機名(服務器名)的Symfony2:
$this->em->getConnection()->getHost();
有您可以從連接如username
,port
和password
訪問許多其它參數。見connection class更多信息
0
試試這個
$conn = Doctrine_Manager::getInstance()->getConnection('doctrine')->getOptions();
$dns_array = split(';', $conn['dsn']);
preg_match('/host=(.*);/', $dns_array, $dbhost);
preg_match('/dbname=(.*)/', $dns_array, $dbname);
$dbname = $dbname;
$dbhost = $dbhost;
$dbuser = $conn['username'];
$dbpass = $conn['password'];
更新
由於Function split() is deprecated
所以這裏推薦的方式。
$dns_array = explode(';', $conn['dsn']);
preg_match('/host=(.*)/', $dns_array[0], $dbhost);
preg_match('/dbname=(.*)/', $dns_array[2], $dbname);
$dbhost = $dbhost[1];
$dbname = $dbname[1];
$dbuser = $conn['username'];
$dbpass = $conn['password'];
相關問題
- 1. Symfony 1.4 Doctrine重置數據前測試
- 2. 在symfony中修改數據庫(doctrine)
- 3. BIRT與當前數據庫連接
- 4. 將Doctrine連接到MS SQL數據庫
- 5. 與數據庫Doctrine PDO連接
- 6. 將Symfony 3中的Doctrine連接到MySQL
- 7. 如何查找當前在PostgreSQL中活動的連接數?
- 8. Symfony/Doctrine重新排列數據庫列
- 9. Symfony and Doctrine:跨數據庫關係
- 10. sqlplus如何查找當前連接的數據庫會話的詳細信息
- 11. 從JNDI連接池中檢索數據庫連接設置
- 12. Java設置連接數據庫
- 13. 爲模型設置數據庫連接?
- 14. 無法連接到數據庫Symfony 3
- 15. 重寫連接數據庫 - Symfony 2
- 16. 連接的Symfony到Sybase數據庫
- 17. 數據庫連接被Symfony/PHP拒絕
- 18. 動態改變當前連接 - Symfony 3
- 19. 如何使用Doctrine在Symfony上進行連接查詢?
- 20. Symfony Doctrine遷移$連接沒有權限
- 21. Symfony和Doctrine - 顯示數據庫中的數據
- 22. 在MariaDB連接器中設置極光之後數據庫連接數增加
- 23. 在MySQL腳本中設置當前數據庫
- 24. 多個數據庫連接:schema_migrations在錯誤的數據庫中查找
- 25. 正確的查詢以獲取PostgreSQL數據庫中的當前連接數
- 26. 數據庫連接設計
- 27. Symfony 3設置測試數據庫
- 28. 查找我在php中連接到的數據庫的名稱
- 29. 在Symfony中重新創建數據庫(錯誤地刪除) - Doctrine?
- 30. 在Symfony/Doctrine中創建動態數據庫和模式
我想有一種更優雅的方式,請參閱http://stackoverflow.com/a/26505585/744975 – 2014-10-22 10:40:14