sql >> Database teknologi >  >> RDS >> Mysql

symfony2 dynamisk databaseforbindelse ved hjælp af doktrin

Det forekommer mig, at brug af Doctrines ODM ikke er den rigtige måde at gribe dette an på. Du kan stadig bruge Doctrine til at oprette forbindelse til databaser og forespørge efter dem. Men hvis du ikke har nogen enhedsklasser, ser brugen af ​​en enhedsadministrator ud til at være upassende.

Brug Doctrine til forbindelseshåndtering

Her er hvordan du opretter en forbindelse til en database med doktrinen Connection klasse:

/** @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 bruge $connection som en simpel PDO objekt:

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

Du kan tilføje denne kode som en tjeneste for at gøre det tilgængeligt overalt.
Hvis du vil oprette forbindelse til en anden database for et andet domæne, kan du bruge denne kode til at identificere domænet:

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

For at få adgang til domænet i en handling gør dette:

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. Udskrivning af forespørgselsresultater i en tabel

  2. Dynamisk overvågning af PostgreSQL-forekomster ved hjælp af pg_top

  3. Implementering af inkrementel belastning ved hjælp af Change Data Capture i SQL Server

  4. Indledende godkendelsesproblem i mysql