Вы можете добавить несколько баз данных для подключения вашего Drupal в вашем файле settings.php:
$databases = [
'HOST1.DATABASE' => [
'default' => [
'driver' => 'mysql',
'username' => '',
'password' => '',
'host' => '127.0.0.1',
'port' => '3306',
'prefix' => '',
'database' => 'contacts',
'collation' => 'utf8mb4_general_ci',
],
],
'HOST2.DATABASE' => [
'default' => [
'driver' => 'mysql',
'username' => '',
'password' => '',
'host' => '127.0.0.1',
'port' => '3306',
'prefix' => '',
'database' => 'contacts_audit',
'collation' => 'utf8mb4_general_ci',
],
],
];
После этого вы можете определить в методе getConnection()
, какой ключ $database
массив, который вы хотите подключить.
\Drupal\Core\Database\Database::getConnection('HOST1.DATABASE')
->query('CREATE TRIGGER contacts_after_update AFTER UPDATE ON contacts FOR EACH ROW BEGIN')
->execute();
и
\Drupal\Core\Database\Database::getConnection('HOST2.DATABASE')
->query('INSERT INTO contacts_audit ( contact_id, updated_date, updated_by) VALUES ( NEW.contact_id, SYSDATE(), ); END;')
->execute();
(Если вы оставите параметр getConnection()
пустым, он будет подключаться к базе данных по ключу $databases['default']
Кроме того, вы можете использовать setActiveConnection()
, если вы хотите больше работать с базой данных, которая, как следует из ее названия, устанавливает активное соединение с нужным ключом $databases
)
Надеюсь, это поможет каким-то образом.