Magentoで複数の外部データベースを接続する方法は? [閉まっている
-
09-10-2019 - |
質問
Magentoのいくつかの外部データベースに接続する必要があります。 1つのチュートリアルを見つけました Magentoで外部データベース接続を作成します. 。このチュートリアルは役立ち、1つの外部データベースに接続するために機能しました。ただし、複数の外部データベースを接続する必要があります。
Magentoの複数の外部データベース(5つの外部データベースを想定)に接続するにはどうすればよいですか?
解決
外部データベースシステムに接続するのに役立つこの1つのMagentoモジュールを見つけました。 http://subesh.com.np/2012/02/magento-external-database-connector-v1-0-0-released/
モジュールを試してみましたが、うまく機能しているようです。これが役立ちます。
編集:
モジュールはMagento Connectでも利用できます。 http://www.magentocommerce.com/magento-connect/sp-edb-4574.html
他のヒント
私はそれをテストしていませんが、それが複製することを期待します externaldb_*
下のノード global\resources
別の(一意の)リソース名があります externaldb2_*
動作するはずです。
<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>
モジュールのetc/config.xmlファイルで使用されるリソースを指定して、モジュールが常に特定のデータソースを使用するか、前の回答で説明されているグローバルconfig xmlで指定できるようにすることができます。デフォルト。
コードのリソースを変更できます。
$resource = Mage::getSingleton(‘core/resource’);
$conn = $resource->getConnection(‘externaldb2_read’);
私が知る限り、同じモジュール内から複数のデータベースソースに接続するモデルを持つことはできません。
私がやったことは、代替データベースに接続する必要があるモデルのみを含む並列ダミーモジュールを作成することです。したがって、すべての作業を行うモジュールは1つのブランチにあり、他のデータベースと通信するダミーモジュールは別々です。問題を美しく解決しますが、最もエレガントなソリューションではありません...しかし、それも少なくともエレガントではありません