Symfony2 - Dynamische Doctrine-Datenbankverbindungen zur Laufzeit

8

Ich suche nach einer guten Lösung für die direkte Verbindung von Datenbanken innerhalb von Symfony mit Doctrine für das Entitätsmanagement.

Das Szenario, das ich habe, ist, dass alle eingehenden Benutzer unseres Dienstes * .website.com-Adressen wie client1.website.com besuchen.

Wir möchten eine Doctrine-Entität für die Client-Tabelle verwenden, um dann ihre Datenbankanmeldeinformationen auf der Grundlage der URL ihres Kontos schnell ausfindig zu machen.

Bisher habe ich die folgenden Themen im Stackoverflow gefunden, in denen die Datenbankanmeldeinformationen dynamisch geändert werden - aber keine klar umsetzbaren Lösungen.

Ich möchte eine Zusammenarbeit vorschlagen, um eine funktionierende Lösung zusammenzustellen, und ich werde einen Blog / Tutorial Post für andere Leute zusammenstellen, die Datenbankverbindungsparameter in Symfony ändern wollen.

Hier sind einige verwandte Beiträge:

Dynamische Datenbankverbindung symfony2

Symfony2, Dynamische DB-Verbindung / Vorübergehende Deaktivierung von Doctrine Service

Danke!

    
Scott R. 27.12.2013, 18:10
quelle

2 Antworten

14

Wenn $ em vorhandener Entitätsmanager ist und Sie die Konfiguration erneut verwenden möchten, können Sie Folgendes verwenden:

%Vor%     
Michał Pipa 27.12.2013, 19:51
quelle
6

Ich musste etwas ähnliches tun - Runtime-Erkennung eines verfügbaren Datenbankservers. Ich habe es getan, indem ich den Parameter doctrine.dbal.connection_factory.class überschrieben habe und meine eigene Ableitung der ConnectionFactory Klasse des Doctrine-Pakets ersetzt habe

Meine services.yml liefert den Parameter und zeigt auf meine benutzerdefinierte Klasse

%Vor%

Geben Sie dann Ihre Erkennungslogik in Pfad \ To \ Class \ CustomConnectionFactory.php

ein %Vor%

Beachten Sie auch, dass Symfony 3.2 die Möglichkeit bietet, Umgebungsvariablen in Containerkonfigurationen zu verwenden und ihre Werte bei Bedarf zu verwenden (anstatt sie zu reparieren, wenn der Container kompiliert wird). Weitere Details finden Sie in der Blog-Ankündigung .

    
Paul Dixon 03.02.2015 12:29
quelle

Tags und Links