Проблема соединения с базой данных в Drupal 8

02/03/2016 - 20:45
Не смотря на то, что недавно вышел 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;
  }
На нашем сайте filinkov.ru мы используем cookie. Примите нашу Политику использования cookie.
Принимаю