উত্তর:
আপনাকে প্রথমে যা করতে হবে তা হ'ল আপনার মডিউলের কনফিগার.এক্সএমএলে একটি সংযোগ তৈরি করা। এটি default_setup
আপনার এর মতো দেখতে হবে /app/etc/local.xml
। এখানে আপনি হোস্টকে লোকালহোস্ট হিসাবে নির্দিষ্ট করতে পারেন এবং তারপরে একটি আলাদা ডিবি নাম সেট করতে পারেন বা আপনি সম্পূর্ণ আলাদা হোস্ট নির্দিষ্ট করতে পারেন। আমি এর আগেও একটি সকেট ব্যবহার করেছি যা কাজ করে।
<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>
এখন এর পরে আপনি এই ডাটাবেসের সাথে সংযুক্ত করতে সক্ষম হবেন নীচের মত একটি সম্পাদন প্রশ্নাবলী:
$new_db_resource = Mage::getSingleton('core/resource');
$connection = $new_db_resource->getConnection('new_db');
$results = $connection->query('SELECT * FROM table');
আপনি একটি মডেল এর মাধ্যমে এই কাজ করতে চান তাহলে নির্দিষ্ট করতে পারেন read
, write
এবং setup
সম্পদ নিম্নরূপ। এটি আবার resources
আপনার কনফিগার.এক্সএমএল নোডের মধ্যে করা হবে এবং test
আপনার মডেলটি সেটআপ হয়েছে তার সাথে প্রতিস্থাপন করা উচিত ।
<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>
মডেল নিজেই ফাংশনে এটির সংযোগের তথ্য সন্ধান করার চেষ্টা করবে getConnection
/app/code/core/Mage/Core/Model/Resource.php
। আপনি লগ ইন করুন যদি $name
পাস মধ্যে তোমার মত মান দেখতে হবে poll_write
, tag_write
এবং cms_read
যেখানে প্রথম অংশ config.xml মডেল মেলা, আমাদের যদি আপনি দেখতে হবে test_write
, test_read
বা test_setup
। যদি এটির সাথে মিলে যদি কোনও সংযোগ না পাওয়া যায় তবে এটি ডিফল্ট সংযোগগুলি ব্যবহার করবে core_read
, core_write
বাcore_setup
এই সমস্ত উত্তর পড়ার পরে, অনুসন্ধান এবং কিছু পরীক্ষা করার পরে আমি এই সমাধানটি পেয়েছি। এখানে আমার ব্লগটি আমি সমাধানটি লিখেছি ।
ম্যাজেন্টো 1.9 এর সাথে কাজ করা আমাকে একাধিক পঠন এবং লিখন সংযোগ তৈরি করতে বলা হয়েছিল। ম্যাজেন্টো /etc/local.xML এ সংযোগগুলি পড়ার এবং লেখার কনফিগার করার সম্ভাবনা রয়েছে। কোনটি উপলভ্য তা ম্যাগেন্টোকে জানাতে কেবল ট্যাগ ব্যবহারটি সেট করুন।
<default_setup>
<connection>
<!-- LOCALHOST -->
<host>localhost</host>
<username>root</username>
<password>123456</password>
<dbname>magento_db</dbname>
<initstatements>SET NAMES utf8</initstatements>
<model>mysql4</model>
<type>pdo_mysql</type>
<pdotype></pdotype>
<active>1</active>
</connection>
</default_setup>
<default_read>
<connection>
<use/>
<!-- ANOTHER SERVER -->
<host>other_server</host>
<username>root</username>
<password>123456</password>
<dbname>magento_db</dbname>
<initstatements>SET NAMES utf8</initstatements>
<model>mysql4</model>
<type>pdo_mysql</type>
<pdotype></pdotype>
<active>1</active>
</use></connection>
</default_read>
<default_write>
<connection>
<use/>
<!-- LOCALHOST -->
<host>localhost</host>
<username>root</username>
<password>123456</password>
<dbname>magento_db</dbname>
<initstatements>SET NAMES utf8</initstatements>
<model>mysql4</model>
<type>pdo_mysql</type>
<pdotype></pdotype>
<active>1</active>
</use></connection>
</default_write>
আমরা এই পরীক্ষার উদাহরণের মতো একই কনফিগারেশনে এন সংযোগগুলি সংজ্ঞায়িত করতে পারি
<test_read>
<connection>
<!-- TEST SERVER -->
<host>test_server</host>
<username>root</username>
<password>123456</password>
<dbname>magento_db</dbname>
<initstatements>SET NAMES utf8</initstatements>
<model>mysql4</model>
<type>pdo_mysql</type>
<pdotype></pdotype>
<active>1</active>
</connection>
</test_read>
সীমাটি হ'ল সংযোগগুলি পুরো সিস্টেমে প্রয়োগ করা হয় তবে আমার ধারণাটি কেবলমাত্র নির্দিষ্ট সংস্থানগুলির জন্য সেট করা। এই ক্ষেত্রে আমার কাছে একটি কাস্টম রিপোর্ট মডিউল রয়েছে যেখানে আমি কেবল অর্ডার সারণীতে পঠিত সংযোগগুলি তৈরি করতে চাই। অর্ডার রিসোর্স Mage / বিক্রয় / মডেল / রিসোর্স / অর্ডার.এফপি ওভাররাইড করার পরে মাত্র 3 টি আপডেট করুন
// পতাকা সর্বজনীন $ রিপোর্টকনেকশন = মিথ্যা; / ** * স্থানীয়.এক্সএমএল 'টেস্ট_ড্রেড' এ সংজ্ঞায়িত সংযোগটি কেবল যুক্ত করুন * / সুরক্ষিত ফাংশন _ কনস্ট্রাক্ট () { $ এটি -> _ init ('বিক্রয় / আদেশ', 'সত্তা_আইডি'); এই $ ->: _ resources-> getConnection ( 'test_read'); } / ** * পতাকাটি সেট করা থাকলে সংযোগ করুন * / সুরক্ষিত ফাংশন _getConnication ($ সংযোগনাম) { যদি (isset ($ এটি -> _ সংযোগগুলি [$ সংযোগ নাম])) { ফেরত দিন - এটি -> _ সংযোগগুলি [$ সংযোগ নাম]; } যদি ($ সংযোগনাম == 'পড়ুন' && $ এটি-> রিপোর্ট সংযোগ) $ এটি -> _ সংযোগগুলি [$ সংযোগনাম] = $ এটি -> _ উত্স-> getConnection ('টেস্ট_ড্রেড'); অন্য { যদি (! খালি ($ এটি -> _ রিসোর্স প্রিফিক্স)) { $ এটি -> _ সংযোগগুলি [$ সংযোগনাম] = $ এটি -> _ সংস্থান-> গেট সংযোগ ( $ এটি -> _ উত্সপ্রিফিক্স ix '_' $ ConnectionName); } অন্য { $ এটি -> _ সংযোগগুলি [$ সংযোগনাম] = $ এটি -> _ উত্স-> getConnication ($ সংযোগনাম); } } ফেরত দিন - এটি -> _ সংযোগগুলি [$ সংযোগ নাম]; }
শেষ পদক্ষেপটি কল অর্ডার সংগ্রহ করা কিন্তু টেস্ট_ড সংযোগটি ব্যবহার করা।
//Get the Order model
$model = Mage::getModel('sales/order');
//set the flag
$model->getResource()->reportConnection = true;
//get the collection
$collection = $model->getCollection();
আপনার মডিউল ইত্যাদিতে / 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);
?>