2011-01-11 18 views
8

Ho bisogno di collegarmi ad alcuni database esterni di Magento. Ho trovato un tutorial su Create an external database connection in Magento. Questo tutorial è stato utile e ha funzionato per la connessione a un database esterno. Ma devo collegare più di un database esterno.Come connettere più database esterni in Magento?

Come posso connettermi a più di un database esterno (supponiamo 5 database esterni) in Magento?

+0

Questo tipo di domanda non appartiene veramente a Stack Overflow, in quanto non è una domanda di programmazione. Dovresti dare un'occhiata a http://area51.stackexchange.com/proposals/25439/magento e vedere come ottenere un posto adatto per mettere questo tipo di domande – Sturm

risposta

2

ho trovato questo un modulo Magento che vi aiuterà per la connessione al sistema di database esterni. http://subesh.com.np/2012/02/magento-external-database-connector-v1-0-0-released/

Ho provato il modulo e sembra funzionare bene. Spero che questo aiuti.

EDIT:

Modulo accessibile Magento Connect anche. http://www.magentocommerce.com/magento-connect/sp-edb-4574.html

+0

Quel collegamento è morto ora, hai un ULR recente? eventuali commenti di follow-up su come questo ha funzionato nei siti live? –

5

Non l'ho provato, ma mi aspetto che la duplicazione dei nodi externaldb_* sotto global\resources con un altro (univoco) nome di risorsa, ad es. externaldb2_* dovrebbe funzionare.

<global> 
<resources> 
    <externaldb_write> 
    <connection> 
     <use>externaldb_database</use> 
    </connection> 
    </externaldb_write> 
    <externaldb_read> 
    <connection> 
     <use>externaldb_database</use> 
    </connection> 
    </externaldb_read> 
    <externaldb_setup> 
    <connection> 
     <use>core_setup</use> 
    </connection> 
    </externaldb_setup> 
    <externaldb_database> 
    <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> 
    </externaldb_database> 
    <externaldb2_write> 
    <connection> 
     <use>externaldb2_database</use> 
    </connection> 
    </externaldb2_write> 
    <externaldb2_read> 
    <connection> 
     <use>externaldb2_database</use> 
    </connection> 
    </externaldb2_read> 
    <externaldb2_setup> 
    <connection> 
     <use>core_setup</use> 
    </connection> 
    </externaldb2_setup> 
    <externaldb2_database> 
    <connection> 
     <host><![CDATA[localhost2]]></host> 
     <username><![CDATA[db2_username]]></username> 
     <password><![CDATA[db2_password]]></password> 
     <dbname><![CDATA[db2_name]]></dbname> 
     <model>mysql4</model> 
     <type>pdo_mysql</type> 
     <active>1</active> 
    </connection> 
    </externaldb2_database> 
</resources> 

+2

Grazie Jonathan per la pronta risposta. Tuttavia, voglio recuperare i dati in modo Magento (usando/creando modelli Magento). Dopo aver aggiunto il nodo externaldb2, come posso usarlo nei modelli Magento. Come nel collegamento di esempio, il nodo externaldb viene utilizzato per definire il modello. Come posso definire il modello per externaldb2 in modo simile? –

+0

@chapagain, fai la stessa cosa, metti il ​​modello in un modulo diverso, in questo modulo imposta il secondo database come risorsa, e puoi fare ciò che stai cercando di fare ... basta richiamare il modello dal 2 ° modulo attraverso il 1 ° – sucitivel

4

è possibile specificare la risorsa utilizzata nel file etc/config.xml del modulo, in modo che un modulo utilizzerà sempre una certa fonte di dati oppure è possibile specificare nel xml configurazione globale come descritto da la risposta precedente, quindi questa connessione verrà utilizzata per impostazione predefinita.

È possibile modificare la risorsa nel codice:

$resource = Mage::getSingleton(‘core/resource’); 
$conn  = $resource->getConnection(‘externaldb2_read’); 
0

Per quanto posso dire, non è possibile avere modelli che si connettono a più origini di database all'interno dello stesso modulo.

Quello che ho fatto, è creare un modulo fittizio parallelo, che contiene solo il modello che deve connettersi al database alternativo. Quindi il modulo che fa tutto il lavoro è in un ramo, e il modulo fittizio per parlare all'altro database è separato. Risolve magnificamente il problema, anche se non è la soluzione più elegante ... ma non è neanche il meno elegante

Problemi correlati