Finn aktuelle Lære database tilkoblingsinnstillingene i symfony

stemmer
10

Jeg trenger å vite databasenavn og databaseservernavnet inne i en symfony prosjekt. Hvordan kan man få tilgang til gjeldende database tilkoblingsinnstillingene programmatisk i symfony (ved hjelp Lære)?

Publisert på 16/05/2011 klokken 00:07
kilden bruker
På andre språk...                            


5 svar

stemmer
20

Forutsatt at du har det EntityManager som $this->em

Få Lære Database Name fra Symfony2:

$this->em->getConnection()->getDatabase();

Få Lære Host Name (Server Name) fra Symfony2:

$this->em->getConnection()->getHost();

Det er mange andre parametere du kan få tilgang fra tilkobling som username, portog password. Se forbindelse klassen for mer info

Svarte 22/10/2014 kl. 10:39
kilden bruker

stemmer
6

for eksempel:

foreach(Doctrine_Manager::getInstance()->getConnections() as $connection){
  $conn = $connection->getOptions();
  preg_match('/host=(.*);/', $conn['dsn'], $host);
  var_dump($host);
}
Svarte 16/05/2011 kl. 08:42
kilden bruker

stemmer
2

Den dbnavn i DSN for en bestemt 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: ********

I Handling:

$mConexion1Options = Doctrine_Manager::getInstance()->getConnection('conexion1')->getOptions();
preg_match('/dbname=(.*)/', $mConexion1Options['dsn'], $mDbConexion1);

Deretter er dbnavn:

echo $mDbConexion1[1]; //basegestion1
Svarte 12/04/2012 kl. 20:25
kilden bruker

stemmer
1

Bruk denne koden:

$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;
}
Svarte 13/02/2013 kl. 05:30
kilden bruker

stemmer
0

Prøv denne

$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']; 

oppdatert

Som Function split() is deprecatedså her anbefales måte.

$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'];
Svarte 06/11/2014 kl. 05:47
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more