कभी-कभी मुझे विभिन्न डेटाबेस, मैसकल / ओरेकल आदि से कनेक्ट करने की आवश्यकता होती है। इसे Magento2 में करने के लिए सबसे अच्छा अभ्यास क्या है
कभी-कभी मुझे विभिन्न डेटाबेस, मैसकल / ओरेकल आदि से कनेक्ट करने की आवश्यकता होती है। इसे Magento2 में करने के लिए सबसे अच्छा अभ्यास क्या है
जवाबों:
यह आधिकारिक रूप से समर्थित नहीं है। हम बेहतर मॉडर्नाइजेशन की ओर बढ़ रहे हैं, एपीआई को प्रतिबंधित करने के लिए सेवा अनुबंध के माध्यम से कॉल करने वालों को फिर से लागू करना होगा (डिफ़ॉल्ट कार्यान्वयन को di.xml फ़ाइल का उपयोग करके बदला जा सकता है), लेकिन यह Magento 2.0.0 में एक सरल काम नहीं होगा । हम उस तरह से आगे बढ़ रहे हैं, लेकिन कोई ईटीए जब यह करना "आसान" होगा।
उदाहरण के लिए, आप डेटाबेस कॉल या मॉड्यूल कॉल को अवरोधन करने के लिए प्लगइन्स का उपयोग कर सकते हैं; आप डिफ़ॉल्ट कार्यान्वयन को बदलने के लिए di.xml का उपयोग कर सकते हैं; आदि तो यह करने के लिए तरीके हैं। (लोग M1 में कभी-कभी ऐसा करते हैं।)
यह "सर्वश्रेष्ठ अभ्यास" नहीं हो सकता है लेकिन मैगेंटो 1 में मुझे एक बार कुछ जानकारी प्राप्त करने के लिए एक SQL सर्वर से कनेक्ट करना पड़ा। मैंने अभी कनेक्शन बनाया है और सिस्टम में कहीं से भी इसे पुनः प्राप्त करने में सक्षम होने के लिए इसे हेल्पर में डाल दिया है।
मैं यह नहीं देखता कि आप Magento 2 में ऐसा क्यों नहीं कर सकते (या कम से कम इसे आज़माएं)
यह है कि मैं यह कैसे करने में कामयाब रहा। पता नहीं कि यह सही तरीका है लेकिन यह काम करता है (केवल mysql):
एप्लिकेशन / etc / env.php
...
'db' =>
array (
'table_prefix' => '',
'connection' =>
array (
'default' =>
array (
'host' => 'localhost',
'dbname' => 'xxxx',
'username' => 'yyyy',
'password' => 'zzzz',
'active' => '1',
),
'myconnection' =>
array (
'host' => 'localhost',
'dbname' => 'somedbname',
'username' => 'xxxx',
'password' => 'yyyy',
'active' => '1',
),
),
),
'resource' =>
array (
'default_setup' =>
array (
'connection' => 'default',
),
'myconnection' =>
array (
'connection' => 'myconnection',
),
),
...
एप्लिकेशन / कोड / विक्रेता / मॉड्यूल / मॉडल / test.php
<?php
namespace Vendor\Module\Model;
use \Magento\Framework\Model\AbstractModel;
class Page extends AbstractModel
{
const UID = 'uid';
/**
* Prefix of model events names
*
* @var string
*/
protected $_eventPrefix = 'test'; // parent value is 'core_abstract'
/**
* Name of the event object
*
* @var string
*/
protected $_eventObject = 'test'; // parent value is 'object'
/**
* Name of object id field
*
* @var string
*/
protected $_idFieldName = self::UID; // parent value is 'id'
/**
* Initialize resource model
*
* @return void
*/
protected function _construct()
{
$this->_init('Vendor\Module\Model\ResourceModel\Page');
}
}
एप्लिकेशन / कोड / विक्रेता / मॉड्यूल / मॉडल / ResourceModel / test.php
<?php
namespace Vendor\Module\Model\ResourceModel;
use \Magento\Framework\Model\ResourceModel\Db\AbstractDb;
class Test extends AbstractDb
{
protected $connectionName = 'myconnection';
/**
* Initialize resource model
*
* @return void
*/
protected function _construct()
{
// Table Name and Primary Key column
$this->_init('testtable', 'uid');
}
}
एप्लिकेशन / कोड / विक्रेता / मॉड्यूल / मॉडल / ResourceModel / टेस्ट / Collection.php
<?php
namespace Vendor\Module\Model\ResourceModel\Test;
use \Magento\Framework\Model\ResourceModel\Db\Collection\AbstractCollection;
class Collection extends AbstractCollection
{
protected $_idFieldName = \Vendor\Module\Model\Test::UID;
/**
* Define resource model
*
* @return void
*/
protected function _construct()
{
$this->_init('Vendor\Module\Model\Test', 'Vendor\Module\Model\ResourceModel\Test');
}
}
आशा है कि यह किसी की मदद करता है।
मिशेल