Когда требуется подключиться и подтянуть данные из не основной базы, то нужно сначала задать свойства нового подключения, подключиться, выполнить запрос, а затем вернуть настройки в исходное состояние. Рассмотрим примеры кода, которые демонстрируют как это сделать.
Подключение к другой базе
Задать параметры подключения можно через файл конфигурации сайта (дополнительно к настройкам основной базы). К примеру, пусть это будет подключение к mysql базе:
| 
					 1 2 3 4 5 6 7 8 9 10  | 
						$databases[<CONNECTION-KEY>][<DATABASE-KEY>] = array(   'database' => 'db_name',   'username' => 'db_username',   'password' => 'db_password',   'prefix' => '',   'host' => 'localhost',   'port' => '3306',   'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql',   'driver' => 'mysql', );  | 
					
Вам нужно придумать уникальное название для вашего подключения — <CONNECTION-KEY> и обычно вы указываете <DATABASE-KEY> — как ‘default’, если у вас всего одна база данных.
Классом-контейнером для нужных нам операций является класс Drupal\Core\Database\Database.
| 
					 1  | 
						use Drupal\Core\Database\Database;  | 
					
В коде вы получаете объект подключения к базе следующим образом:
| 
					 1 2  | 
						Database::setActiveConnection(<CONNECTION-KEY>); $db = Database::getConnection();  | 
					
Настройки подключения можно задать и напрямую из вашего кода:
| 
					 1 2 3 4 5 6 7 8 9 10 11 12  | 
						$database = array(   'database' => 'db_name',   'username' => 'db_username',   'password' => 'db_password',   'host' => 'localhost',   'driver' => 'mysql',   'port'    => '3306',   'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql' ); Database::addConnectionInfo(<CONNECTION-KEY>, 'default', $database); Database::setActiveConnection(<CONNECTION-KEY>); $db = Database::getConnection();  | 
					
Операции с базой
Получив соединение, вы можете выполнять операции с базой данных. В примере, я пытаюсь получить данные из таблицы users:
| 
					 1 2 3 4 5 6 7 8 9 10  | 
						$query = $db->select('users', 'u'); $query->fields('u', ['uid']); try {   $users = $query->execute()->fetchAssoc(); } catch(\Drupal\Core\Database\DatabaseExceptionWrapper $execute) {   $users = []; } catch(Exception $e) {   $users = []; }  | 
					
Обратите внимание на обработку исключений, простейший пример которой приведен выше.
Переключение на основную базу
Далее вам требуется вернуться к основным настройкам и продолжить работу с основной базой.
| 
					 1 2 3  | 
						Database::setActiveConnection('default'); $query = \Drupal::database()->select('users', 'u'); ...  | 
					
По сути это не обязательно, т.к. \Drupal::database() — это и есть основной ваш объект подключения к базе, но если далее в программе какие то модули запрашивают Database::getConnection(), то скорее всего им нужна не ваша «левая» база.