Als erstes müssen Sie eine Verbindung in der config.xml Ihres Moduls erstellen. Es sollte ähnlich aussehen wie default_setup
in Ihrem /app/etc/local.xml
. Hier können Sie den Host als localhost angeben und dann einen anderen Datenbanknamen festlegen oder einen anderen Host vollständig angeben. Ich habe auch eine Steckdose benutzt, bevor das auch funktioniert.
<resources>
<new_db>
<connection>
<host><![CDATA[localhost]]></host>
<username><![CDATA[db_username]]></username>
<password><![CDATA[db_password]]></password>
<dbname><![CDATA[db_name]]></dbname>
<model>mysql4</model>
<type>pdo_mysql</type>
<active>1</active>
</connection>
</new_db>
</resources>
Danach können Sie eine Verbindung zu dieser Datenbank herstellen und Abfragen wie folgt durchführen:
$new_db_resource = Mage::getSingleton('core/resource');
$connection = $new_db_resource->getConnection('new_db');
$results = $connection->query('SELECT * FROM table');
Wenn Sie dies über ein Modell tun wollen , dann können Sie angeben , die read
, write
und setup
Ressourcen wie folgt. Dies wird wieder innerhalb des resources
Knotens in Ihrer config.xml durchgeführt und Sie sollten das ersetzen, als test
was Ihr Modell eingerichtet wurde.
<resources>
<new_db>
<connection>
<host><![CDATA[localhost]]></host>
<username><![CDATA[db_username]]></username>
<password><![CDATA[db_password]]></password>
<dbname><![CDATA[db_name]]></dbname>
<model>mysql4</model>
<type>pdo_mysql</type>
<active>1</active>
</connection>
</new_db>
<test_write>
<connection>
<use>new_db</use>
</connection>
</test_write>
<test_read>
<connection>
<use>new_db</use>
</connection>
</test_read>
<test_setup>
<connection>
<use>new_db</use>
</connection>
</test_setup>
</resources>
<models>
<test>
<class>My_Test_Model</class>
<resourceModel>test_resource</resourceModel>
</test>
<test_resource>
<class>My_Test_Model_Resource</class>
<entities>
<test>
<table>test</table>
</test>
</entities>
</test_resource>
</models>
Das Modell selbst versucht, seine Verbindungsinformationen in der Funktion zu finden getConnection
/app/code/core/Mage/Core/Model/Resource.php
. Wenn Sie das Protokoll $name
übergeben Sie Werte wie sehen werden poll_write
, tag_write
und cms_read
wo der erste Teil entspricht die Modelle Abschnitt in der config.xml, in unserem Fall würden Sie sehen test_write
, test_read
oder test_setup
. Wenn es keine Verbindung für diese dann wird es die Standardverbindungen verwenden finden können core_read
, core_write
odercore_setup
Nachdem ich all diese Antworten gelesen, gesucht und einige Tests durchgeführt hatte, fand ich diese Lösung. Hier ist mein Blog, in dem ich die Lösung geschrieben habe .
Bei der Arbeit mit Magento 1.9 wurde ich gebeten, mehrere Lese- und Schreibverbindungen herzustellen. Magento hat die Möglichkeit, Lese- und Schreibverbindungen in der /etc/local.xml zu konfigurieren. Stellen Sie einfach die Tag-Verwendung ein, um Magento wissen zu lassen, welches verfügbar ist.
Wir können in der gleichen Konfigurationsdatei wie in diesem Testbeispiel n Verbindungen definieren
Das Limit ist, dass die Verbindungen auf das gesamte System angewendet werden, aber meine Idee ist, nur für bestimmte Ressourcen festzulegen. In diesem Fall habe ich ein benutzerdefiniertes Berichtsmodul, in dem ich nur Leseverbindungen in der Auftragstabelle herstellen möchte. Nach dem Überschreiben der Bestellressource Mage / Sales / Model / Resource / Order.php mache einfach 3 Updates
Der letzte Schritt besteht darin, eine Auftragssammlung aufzurufen, aber die Verbindung test_read zu verwenden.
quelle
Fügen Sie in Ihrem Modul etc / config.xml folgenden Code hinzu:
So rufen Sie Daten mit einer neuen Datenbank aus einer Tabelle ab:
quelle