Extra Block Types (EBT) - New Layout Builder experience❗

Extra Block Types (EBT) - styled, customizable block types: Slideshows, Tabs, Cards, Accordions and many others. Built-in settings for background, DOM Box, javascript plugins. Experience the future of layout building today.

Demo EBT modules Download EBT modules

❗Extra Paragraph Types (EPT) - New Paragraphs experience

Extra Paragraph Types (EPT) - analogical paragraph based set of modules.

Demo EPT modules Download EPT modules

Scroll
01/05/2020, by maria

Уровень базы данных Drupal построен поверх библиотеки PDO PHP. PDO предоставляет унифицированный объектно-ориентированный API для доступа к различным базам данных, но не предоставляет абстракцию для различных диалектов SQL, используемых в разных базах данных.

Драйверы

Поскольку разные базы данных требуют разных видов взаимодействия, уровень базы данных Drupal требует драйвера для каждого типа базы данных. Драйвер состоит из серии файлов, расположенных в include/database/driver, где driver - это строка, представляющая уникальный ключ для этого драйвера. В большинстве случаев ключом драйвера является строчная версия имени базы данных, например «mysql», «pgsql» или «mycustomdriver».

Каждый драйвер состоит из нескольких классов, производных от родительских классов в базовой системе баз данных. Эти специфичные для драйвера классы могут переопределять любое поведение, необходимое для правильной поддержки этого типа базы данных. Специфичные для драйвера классы всегда именуются для их родительского класса, за которым следует подчеркивание, за которым следует имя драйвера. Например, специфичная для MySQL версия InsertQuery называется InsertQuery_mysql.

Связи

Соединение - это объект класса DatabaseConnection, который наследуется от класса PDO. С каждой базой данных, к которой подключается Drupal, связан один объект подключения. Этот объект подключения должен быть разделен на подклассы для каждого отдельного драйвера.

Чтобы получить доступ (и при необходимости открыть) к объекту подключения, используйте:

$database = \Drupal::database();
// Or
$database = \Drupal::service('database');

Если сервисы еще не доступны, \Drupal\Core\Database\Database::getConnection() может получить соединение с базой данных.

Для получения дополнительной информации о цели и ключе подключения см. Страницу документации по конфигурации базы данных.

Чтобы получить доступ к текущему активному соединению, используйте:

$conn =  \Drupal\Core\Database\Database::getConnection() ;

Это получит цель по умолчанию для активного соединения.

Обратите внимание, что в подавляющем большинстве случаев вам не нужно запрашивать объект подключения напрямую. Скорее процедурные обертки сделают это для вас. Единственная причина, по которой вам когда-либо потребуется прямой доступ к объекту соединения, - это если вы выполняете сложные манипуляции с несколькими базами данных и не хотите менять активную базу данных.

Чтобы установить активное соединение, используйте:

$conn = \Drupal\Core\Database\Database::setActiveConnection('external');

См. Следующий раздел, Конфигурация базы данных, для получения подробной информации о ключах подключения и целях.

Запросы

Запрос - это оператор SQL, который будет отправлен в соединение с базой данных. Система баз данных поддерживает шесть типов запросов: статический, динамический, вставка, обновление, удаление и слияние. Некоторые запросы пишутся как строковые шаблоны SQL (подготовленные операторы), в то время как другие используют объектно-ориентированные построители запросов. «Объект запроса» относится к экземпляру построителя запросов для одного из различных типов запросов.

Заявления

Объект оператора является результатом запроса выбора. Он всегда будет иметь тип DatabaseStatement или, возможно, подкласс DatabaseStatement. DatabaseStatement расширяет класс PDOStatement.

Drupal использует подготовленные операторы для всех запросов. Подготовленный оператор - это шаблон запроса, в который будут вставлены значения для выполнения. Представьте подготовленный оператор как эквивалент SQL функции, которая затем вызывается с параметрами для использования.

В обычном PDO необходимо явно подготовить объект оператора и затем выполнить его с определенными значениями, привязанными к заполнителям в запросе. Затем оператор может быть повторен как набор результатов. Фактически оператор и набор результатов являются синонимами, но только после того, как оператор был выполнен.

Drupal не раскрывает подготовленное утверждение напрямую. Вместо этого разработчик модуля будет использовать объект запроса или одноразовую строку SQL для выполнения запроса, и объект оператора для этого запроса будет возвращен. Таким образом, термины «объект оператора» и «объект набора результатов» являются более или менее синонимами.

Source URL:
Source authors:

Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.