ОК. Итак, для тех из нас, кто пробовал что-то подобное, первое, что вы понимаете, это то, что когда вы хотите, чтобы в качестве источника в вашем модуле использовалось более одной базы данных ... вам действительно нужно 2 модулей для этого (кто-то вмешивается и поправляет меня, если я не прав).
Шаг 1: Создайте «фиктивный» модуль для соединения с вашей удаленной базой данных. Этот модуль должен просто содержать etc / и Model / - больше ничего не нужно. Мой config.xml выглядит следующим образом:
<config>
<modules>
<Mage_RepoDummy>
<version>0.1.0</version>
</Mage_RepoDummy>
</modules>
<global>
<resources>
<repodummy_write>
<connection>
<use>repodummy_database</use>
</connection>
</repodummy_write>
<repodummy_read>
<connection>
<use>repodummy_database</use>
</connection>
</repodummy_read>
<repodummy_setup>
<connection>
<use>core_setup</use>
</connection>
</repodummy_setup>
<repodummy_database>
<connection>
<host><![CDATA[localhost]]></host>
<username><![CDATA[brandrepo]]></username>
<password><![CDATA[*******]]></password>
<dbname><![CDATA[brandrepo]]></dbname>
<model>mysql4</model>
<type>pdo_mysql</type>
<active>1</active>
</connection>
</repodummy_database>
</resources>
<models>
<repodummy>
<class>Mage_RepoDummy_Model</class>
<resourceModel>repodummy_mysql4</resourceModel>
</repodummy>
<repodummy_mysql4>
<class>Mage_RepoDummy_Model_Mysql4</class>
<entities>
<product>
<table>catalog_product_entity</table>
</product>
</entities>
</repodummy_mysql4>
</models>
</global>
<adminhtml>
</adminhtml>
Теперь вам понадобятся следующие файлы моделей и ресурсов:
/Model/Product.php
/Model/Mysql4/Product.php
/Model/Mysql4/Product/Collection.php
В Product.php:
class Mage_RepoDummy_Model_Product extends Mage_Catalog_Model_Abstract
{
public function _construct()
{
$this->_init('repodummy/product', 'entity_id');
}
}
In Mysql4 / Product.php
class Mage_RepoDummy_Model_Mysql4_Product extends Mage_Catalog_Model_Resource_Abstract
{
public function __construct()
{
parent::__construct();
$this->setType(Mage_Catalog_Model_Product::ENTITY)
->setConnection('repodummy_read', 'repodummy_write');
$this->_productWebsiteTable = $this->getTable('catalog/product_website');
$this->_productCategoryTable = $this->getTable('catalog/category_product');
}
}
И In Mysql4 / Product / Collection.php
class Mage_RepoDummy_Model_Mysql4_Product_Collection extends Mage_Catalog_Model_Resource_Collection_Abstract {
protected function _construct()
{
$this->_init('repodummy/product');
}
}
Просто босоножки, как и для любой базовой модели в Magento. Теперь из другого модуля, который подключен к любой другой базе данных, возможно / возможно, к вашему локальному экземпляру, вы можете получить доступ к этому удаленному хранилищу данных, вызвав ваш фиктивный объект, если вы хотите проверить это, просто сделайте что-нибудь простое, например:
$test = Mage::getModel('repodummy/product')->load(10367);
die("::".$test->getSku()."::");
... и эта модель по большей части должна функционировать так же, как ваша типичная модель продукта, за исключением того, что вы используете удаленную базу данных, приятного кодирования!