die Verbindung zu zwei verschiedenen Datenbanken mit dem Zend Framework
Habe ich hier eine mittelgroße intranet-Website, die vollständig geschrieben in Zend FW. Die Datenbank für das intranet befindet sich auf einem anderen server. Jetzt habe ich verlängern müssen, im intranet mit einigen neuen Funktionen. Um dies zu tun, ich muss eine Verbindung zu einer anderen Datenbank auf dem gleichen server und der gleichen DBMS).
Die Frage ist nun: Was ist der beste Weg, dies zu tun? Sollte ich ein neues Zend_Config-Objekt und ein neues Zend_Db_Adapter? Oder sollte ich das bestehende ein und versuchen Sie mit der "Verwendung otherdbname;" - Anweisung, um eine Verbindung innerhalb der gleichen session auf die neue Datenbank?
Oder gibt es einen noch besseren Weg, es zu tun?
InformationsquelleAutor der Frage Raffael Luthiger | 2009-10-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist eine option, um das register 2 Datenbank-handles in Ihrem
bootstrap.php
eines für jede Verbindung. E. g.:Im Controller (z.B.):
InformationsquelleAutor der Antwort karim79
Ich denke, das hängt davon ab, wie oft Sie zu wechseln Datenbanken. Mit zwei verschiedenen Adaptern wird die Unterscheidung zwischen den zwei Datenbanken mehr sauber und wäre meine Präferenz.
Wenn Sie Wechsel der Datenbanken auf einem einzelnen adapter werden Sie sicherlich eine harte Zeit-Ablaufverfolgung, die Datenbank ist derzeit aktiv - Bedenken Sie, dass Ihre Datenbank-Verbindung ist wahrscheinlich ein singleton, die übergeben wird auf die zwischen den Modulen, Ihren Controller und Ihre entsprechenden Modelle.
Die Dritte Möglichkeit wäre die Verwendung von expliziten Tabelle Namen der gesamten Anwendung. MySQL bietet beispielsweise die
db_name.table_name
-syntax zum adressieren von Tabellen in unterschiedlichen Datenbanken auf dem gleichen server. Die Standard-Datenbank nicht die Sache auf diese Weise und auchZend_Db_Table
undZend_Db_Select
unterstützen diese syntax aus der box.EDIT:
Muss ich hinzufügen, dass option 2 und 3 wird nur funktionieren, wenn der Datenbank-Benutzer hat die entsprechenden Zugriffsrechte auf alle Datenbanken, Tabellen und Spalten, die Sie verwenden möchten. Option 1 ist die einzige Verbleibende Möglichkeit, wenn Ihre Datenbank einen anderen Benutzer benötigt, die auf jede Ihrer Datenbanken.
InformationsquelleAutor der Antwort Stefan Gehrig
Ich bin Mit dieser Config.ini Sie können Sie können es verwenden, auch :
können Sie es verwenden, für Produktion , Test und Entwicklung-Umgebung wenn Sie eine Verbindung zu einer anderen DB auf der gleichen Zeit, die Sie verdoppeln die config der Datenbank wie :
dann können Sie laden Sie es auf die bootstap oder wo immer Sie mögen 🙂
und es ist auch einfach
InformationsquelleAutor der Antwort tawfekov
eine der beste Weg ist:
erstellen neue Modell-Tabelle für jede Tabelle der Datenbank:
InformationsquelleAutor der Antwort 3ehrang
Von dem, was ich gefunden habe hierum zu verwenden, die verschiedenen Datenbanken in einer Zend-Anwendung, können Sie eine dieser zwei Möglichkeiten, nach Ihren Bedürfnissen:
- Unter gleichen host/Benutzer für die beiden Datenbanken
Können Sie die Datenbank angeben, die Sie verwenden möchten, initialisieren der
$_schema
variable in das Modell, wie folgt:- Unter verschiedenen host - /Benutzer für die beiden Datenbanken
In
application.ini
schreiben Sie die Konfiguration für die beiden Datenbanken wie folgt:Hinzufügen der
_initDbRegistry
block-bootstrap wird, fügen Sie die Datenbanken für die Registrierung, so dass Sie in der Lage sein, um Ihnen den Zugang:Nun können Sie den adapter, den Sie verwenden möchten, für jedes Modell, wie folgt:
InformationsquelleAutor der Antwort clami219