Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Symfony2 dynamiczne połączenie z bazą danych za pomocą doktryny

Wydaje mi się, że korzystanie z Doctrines ODM nie jest właściwym sposobem podejścia do tego problemu. Nadal możesz używać Doctrine do łączenia się z bazami danych i wysyłania do nich zapytań. Ale jeśli nie masz klas encji, użycie menedżera encji wydaje się nieodpowiednie.

Użyj Doctrine do obsługi połączeń

Oto jak tworzysz połączenie do Bazy Danych z doktryną Connection klasa:

/** @var \Doctrine\Bundle\DoctrineBundle\ConnectionFactory $connectionFactory */
$connectionFactory = $this->getContainer()->get('doctrine.dbal.connection_factory');
$connection = $connectionFactory->createConnection(
    array('pdo' => new \PDO("mysql:host=$hostname;dbname=$dbname", $username, $password))
);

Teraz możesz użyć $connection jako proste PDO obiekt:

$connection->executeQuery('SELECT * FROM your_table');

Możesz dodać ten kod jako usługę aby była dostępna wszędzie.
Jeśli chcesz połączyć się z inną bazą danych dla innej domeny, możesz użyć tego kodu do identyfikacji domeny:

$this->getRequest()->getHost();

Aby uzyskać dostęp do domeny za pomocą działania zrób to:

public function yourAction(Request $request, /* ... */)
{
    // the Controller extends the Container. So need to get it here:
    $connectionFactory = $this->get('doctrine.dbal.connection_factory');

    // also access the domain like this:
    $domain = $request->getHost();
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL-Wydajność przy zamawianiu na kolumnie obliczeniowej

  2. Błąd wstawiania pojedynczego cudzysłowu MySQL

  3. Jak ustawić próg lub ograniczyć tabelę mysql?

  4. Jak stworzyć widok MySQL

  5. Prawidłowy sposób na utrzymanie aktywnych połączeń w puli (lub przerwanie ich i uzyskanie nowych) podczas dłuższej nieaktywności dla MySQL, aplikacji Grails 2