Может ли Magento подключиться к другой базе данных MySQL? - PullRequest
3 голосов
/ 02 августа 2011

Мне было интересно, возможно ли подключение Magento к своей основной базе данных, а также к другой базе данных, не содержащей основной информации Magento?

Например, я хотел бы иметь возможность запрашиватьтаблицы из инсталляции WordPress, которая хранится в другой базе данных на другом сервере?

Моим первым инстинктом было создание нового соединения с базой данных с помощью mysql_connect, но это неправильно для этого.

Есть ли более "правильный" способ сделать это?

Ответы [ 4 ]

9 голосов
/ 02 августа 2011

вот полное объяснение: http://fishpig.co.uk/magento-tutorials/create-an-external-database-connection-in-magento
короче говоря, вам нужно создать новый ресурс и указать magento использовать этот ресурс для вашей модели, т. е. в файле config.xml, внутри тега <global>:

    <resources>
        <external_db>
            <connection>
                <host><![CDATA[host]]></host>
                <username><![CDATA[username]]></username>
                <password><![CDATA[password]]></password>
                <dbname><![CDATA[dbname]]></dbname>
                <model>mysql4</model>
                <type>pdo_mysql</type>
                <active>1</active>
            </connection>
        </external_db>
        <yourmodelalias_read>
            <connection>
                <use>external_db</use>
            </connection>
        </yourmodelalias_read>
    </resources>
1 голос
/ 02 августа 2011

Если вы загляните в /lib/Varien/Db/Adapter/Mysqli.php, вы увидите, что Magento расширяет Zend_Db_Adapter_Mysqli, а в функции _connect () он проверяет, существует ли кешированная копия соединения немедленно.

Мне кажется маловероятным, что использование адаптера Magento Db напрямую сработает, поскольку вам придется переопределить эту функцию.Таким образом, остается две опции:

  1. Используйте адаптер Zend DB, что довольно просто, если вы использовали его раньше.
  2. Просто используйте функции PHP MySQL напрямую.Обязательно используйте библиотеки PDO или MySQLi, а не ext / mysql.Библиотека ext / mysql устарела и ее сложно использовать безопасно.

http://php.net/manual/en/ref.pdo-mysql.php

http://php.net/manual/en/book.mysqli.php

http://framework.zend.com/manual/en/zend.db.html

Редактировать: Добавление модуля Magento Connect

http://www.magentocommerce.com/magento-connect/fishpig/extension/3958/fishpig_wordpress_integration

Это бесплатный Magento-> Wordpress мост.Возможно, стоит заглянуть в их источник, чтобы увидеть, какой путь они выбрали.

0 голосов
/ 24 декабря 2016

В вашем модуле etc / config.xml добавьте следующий код:

<global>
    <resources>
        <modulename_write>
            <connection>
                <use>modulename_database</use>
            </connection>
        </modulename_write>
        <modulename_read>
            <connection>
                <use>modulename_database</use>
            </connection>
        </modulename_read>
        <modulename_setup>
            <connection>
                <use>core_setup</use>
            </connection>
        </modulename_setup>
        <modulename_database>
            <connection>
                <host><![CDATA[localhost]]></host>
                <username><![CDATA[db_username]]></username>
                <password><![CDATA[db_password]]></password>
                <dbname><![CDATA[tablename]]></dbname>
                <model>mysql4</model>
                <type>pdo_mysql</type>
                <active>1</active>
            </connection>
        </modulename_database>
    </resources>
</global>

Чтобы получить данные из таблицы, используя новую базу данных:

<?php 
    $resource   = Mage::getSingleton('core/resource');
    $conn       = $resource->getConnection('modulename_read');
    $results    = $conn->fetchAll('SELECT * FROM tablename');

    echo "<pre>";
    print_r($results);
?>
0 голосов
/ 31 декабря 2013

Для пользовательского подключения magento перейдите по этой ссылке.

http://magentoo.blogspot.in/2013/12/create-custom-database-connection-in.html

Надеюсь, эта ссылка поможет вам ....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...