sql >> Databasteknik >  >> RDS >> Mysql

symfony2 dynamisk databasanslutning med doktrin

Det verkar för mig att använda Doctrines ODM inte är rätt sätt att närma sig detta. Du kan fortfarande använda Doctrine för att ansluta till databaser och fråga dem. Men om du inte har några enhetsklasser verkar användningen av en enhetshanterare vara olämplig.

Använd Doctrine för anslutningshantering

Så här skapar du en anslutning till en databas med doktrinen Connection klass:

/** @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 kan du använda $connection som en enkel PDO objekt:

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

Du kan lägga till den här koden som en tjänst för att göra den tillgänglig överallt.
Om du vill ansluta till en annan databas för en annan domän kan du använda den här koden för att identifiera domänen:

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

För att komma åt domänen i en åtgärd gör så här:

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. Infogar i Oracle Nested Table i Java

  2. Hur ansluter man till en fjärransluten MySQL-databas via SSL med Play Framework?

  3. Uppdatering av flera MySQL-tabellkolumner med arrayer med PDO

  4. ORA-12560:TNS:protokolladapterfel