sql >> Database >  >> RDS >> Mysql

symfony2 dynamische databaseverbinding met doctrine

Het lijkt mij dat het gebruik van Doctrines ODM niet de juiste manier is om dit aan te pakken. U kunt Doctrine nog steeds gebruiken om verbinding te maken met databases en deze te doorzoeken. Maar als u geen entiteitsklassen heeft, lijkt het gebruik van een entiteitsmanager ongepast.

Gebruik Doctrine voor het afhandelen van verbindingen

Hier ziet u hoe u een verbinding maakt met een database met de doctrine Connection klas:

/** @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))
);

Nu kunt u $connection . gebruiken als een eenvoudige PDO voorwerp:

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

Je zou deze code kunnen toevoegen als een service om het overal toegankelijk te maken.
Als u verbinding wilt maken met een andere database voor een ander domein, kunt u deze code gebruiken om het domein te identificeren:

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

Toegang krijgen tot het domein in een actie doe dit:

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. T-SQL krijgt aantal werkdagen tussen 2 datums

  2. De IIf()-functie versus de IIf()-instructie

  3. Optionele maand of dag in MySQL-datumveld van PHP

  4. BESTEL OP datum met data uit het verleden na komende data