Проблема соединения с базой данных в Drupal 8
Не смотря на то, что недавно вышел Drupal 8. Разработчикам стоит уже сейчас задуматься над работай своих модулей в Drupal 9. С выходом Drupal 9 будут убраны из ядра обертки для работы с функциями базы данных: db_insert(), db_select() и др. При этом уже сейчас рекомендуется вызывать методы для обработки запросов через специальный объект соединения с базой данных: «Например, $injected_database->insert($table, $options);».
Вся проблема в том как же инициализировать в своем классе $injected_database.
Как правило работа с базой данных выполняется в так называемых службах. Подробнее об этом читайте тут http://symfony-gu.ru/documentation/ru/html/book/service_container.html. При описании службы в своем модуле в module_name.servises.yml необходимо обязательно указать аргумент - arguments: ['@database'].
demo.service: class: Drupal\site_kadry_courses\CoursesTest arguments: ['@database']
Именно благодаря этому аргументу в конструктор класса будет передана ссылка на активное соединение с базой данных.
public function __construct(Connection $connection) { $this->connection = $connection; }