É possível conectar-se a outro banco de dados do Magento e acessar dados?
Se eu precisar criar um módulo, como posso criar um módulo para acessar outro banco de dados? Existe algum tutorial que fale sobre o mesmo a partir do zero? Qualquer ideia?
É possível conectar-se a outro banco de dados do Magento e acessar dados?
Se eu precisar criar um módulo, como posso criar um módulo para acessar outro banco de dados? Existe algum tutorial que fale sobre o mesmo a partir do zero? Qualquer ideia?
A primeira coisa que você precisa fazer é criar uma conexão no config.xml do seu módulo. Deve ser semelhante ao do default_setup
seu /app/etc/local.xml
. Aqui você pode especificar o host como host local e, em seguida, definir um nome de db diferente ou pode especificar um host diferente completamente. Eu também usei um soquete antes do qual também funciona.
<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>
Agora, depois disso, você poderá conectar-se a este banco de dados e realizar consultas da seguinte maneira:
$new_db_resource = Mage::getSingleton('core/resource');
$connection = $new_db_resource->getConnection('new_db');
$results = $connection->query('SELECT * FROM table');
Se você quiser fazer isso através de um modelo, em seguida, você pode especificar o read
, write
e setup
recursos como segue. Isso será feito novamente dentro do resources
nó no seu config.xml e você deverá substituir test
pelo que seu modelo foi configurado.
<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>
O próprio modelo tentará encontrar suas informações de conexão na função getConnection
/app/code/core/Mage/Core/Model/Resource.php
. Se você fizer o login $name
, verá valores como poll_write
, tag_write
e cms_read
onde a primeira parte corresponde à seção de modelos no config.xml, no nosso caso, você verá test_write
, test_read
ou test_setup
. Se não puder encontrar uma conexão combinar este, em seguida, ele usará as conexões padrão core_read
, core_write
oucore_setup
Depois de ler todas essas respostas, pesquisando e fazendo alguns testes, encontrei esta solução. Aqui está o meu blog onde escrevi a solução .
Trabalhando com o Magento 1.9, fui solicitado a fazer várias conexões de leitura e gravação. O Magento tem a possibilidade de configurar conexões de leitura e gravação no /etc/local.xml. Basta definir o uso da tag para que o Magento saiba qual está disponível.
Podemos definir n conexões no mesmo arquivo de configuração como este exemplo de teste
O limite é que as conexões sejam aplicadas a todo o sistema, mas minha ideia é definir apenas para determinados recursos. Nesse caso, eu tenho um módulo de relatório personalizado, no qual só quero fazer conexões de leitura na tabela Pedido. Após substituir o recurso Pedido Mage / Sales / Model / Resource / Order.php Basta fazer 3 atualizações
O último passo é fazer uma coleção de pedidos chamar, mas usando a conexão test_read.
fonte
No seu módulo etc / config.xml, adicione o seguinte código:
Para obter dados da tabela usando o novo banco de dados:
fonte