দ্রুপাল 8 এ একাধিক ডাটাবেস সংযোগের সাথে সংযোগ স্থাপনে কেউ আমাকে সহায়তা করতে পারে? আমার একই সার্ভারে ডাটাবেস রয়েছে এবং আমি এটি ডিফল্ট ড্রুপাল 8 ডাটাবেসের সাথেও অ্যাক্সেস করতে চাই।
দ্রুপাল 8 এ একাধিক ডাটাবেস সংযোগের সাথে সংযোগ স্থাপনে কেউ আমাকে সহায়তা করতে পারে? আমার একই সার্ভারে ডাটাবেস রয়েছে এবং আমি এটি ডিফল্ট ড্রুপাল 8 ডাটাবেসের সাথেও অ্যাক্সেস করতে চাই।
উত্তর:
এটি ড্রুপাল 7 এর মতোই করা হয়, আপনি নিজের সেটিংস.এফপি ফাইলটিতে ডাটাবেস শংসাপত্রগুলি যুক্ত করতে পারেন।
$databases['default']['default'] = array(
'database' => 'drupal8',
'username' => 'username',
'password' => 'password',
'prefix' => '',
'host' => 'localhost',
'port' => '3306',
'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql',
'driver' => 'mysql',
);
$databases['external']['default'] = array(
'database' => 'external',
'username' => 'username',
'password' => 'password',
'prefix' => '',
'host' => 'localhost',
'port' => '3306',
'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql',
'driver' => 'mysql',
);
আপনার কাছে এখন দুটি সংযোগ বিকল্প থাকবে, ডিফল্ট এবং বাহ্যিক। আপনি তাদের ব্যবহার করে এগুলির মধ্যে স্যুইচ করতে পারেন:
// Switch to external database
\Drupal\Core\Database\Database::setActiveConnection('external');
// Do queries...
// Switch back
\Drupal\Core\Database\Database::setActiveConnection();
Database::getConnection('external')
এবং বৈশ্বিক রাষ্ট্রের সাথে ঝামেলা এড়ান।
বহিরাগত ডাটাবেস ব্যবহার করে একটি ডাটাবেস সংযোগ পুনরুদ্ধার করা ছাড়াও , সংযোগটি নির্ভরতা হিসাবে পুনরুদ্ধার করতে এবং আপনার মডিউলের পরিষেবাদি ওয়াইএএমএল ফাইলে আপনার সংযোগ ঘোষণা করার জন্য আপনি নিজের কোডে নির্ভরতা ইনজেকশনটিDatabase::getConnection()
ব্যবহার করতে পারেন :
database.external:
class: Drupal\Core\Database\Connection
factory: 'Drupal\Core\Database\Database::getConnection'
arguments: ['external']
external_database_dependent_service:
class: Drupal\MODULE\Some\Class\For\A\ServiceUsingTheExternalDatabase
arguments: ['@database.external']
আপনাকে অনেক ধন্যবাদ, @ গুগলটর!
এখানে আরও একটি সম্পূর্ণ উদাহরণ - নোড তৈরি করেছেন এমন ডি 7 ডাটাবেস থেকে ব্যবহারকারীদের নির্বাচন করার জন্য আমার কোড:
\Drupal\Core\Database\Database::setActiveConnection('external');
// Get a connection going
$db = \Drupal\Core\Database\Database::getConnection();
$query = $db->select('users', 'u');
$query->fields('u', array('uid', 'name'));
$query->join('node', 'n', 'n.uid = u.uid');
$query->orderBy('uid');
$users = $query->execute()->fetchAllKeyed();
\Drupal\Core\Database\Database::setActiveConnection();