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

Блог

Работа с БД в Drupal 7 - урок 12 - Условия запросов (WHERE, HAVING, LIKE)

02/12/2019, by Ivan

Условие запроса позволяет выбрать только те записи, которые подходят под некоторые ограничения, например ноды созданные не раньше двух недель назад, термины в которых есть слово "друпал" и т.д. В SQL мы используем WHERE и HAVING чтобы задать ограничения на запросы SELECT, UPDATE, DELETE. В динамических запросах также реализован механизм для работы с условиями запросов. Этот механизм работает одинаково для всех трех типов запросов: выбора, обновления, удаления.

Концепция условных выражений

Условие содержится в специальном выражение задающем ограничение.

Работа с БД в Drupal 7 - урок 11 - Запросы слияния (MERGE)

02/12/2019, by Ivan

Запросы слияния это специальный гибридный тип запросов. Хотя синтаксис для этих запросов был определен в SQL 2003, фактически нет БД поддерживающих этот синтаксис. Однако большинство БД предоставляют альтернативную реализацию использования специфического синтаксиса. Конструктор запросов слияния в Drupal абстрагирует концепцию слияния запроса в структуре объекта, так что объект может быть скомпилирован для каждой БД по разному с учетом ее специфики.

Работа с БД в Drupal 7 - урок 10 - Запросы удаления (DELETE)

02/12/2019, by Ivan

Запросы удаления должны использовать конструктор запросов. Они начинаются с функции db_delete():

<?php
$query = db_delete('node', $options);
?>

Это запрос на удаление будет удалять записи из таблицы node. Заметьте что не нужно оборачивать имя таблицы в фигурные скобки, конструктор запросов делает это сам. Запросы на удаление используют Fluent API, то есть все методы (кроме execute()) возвращают объект-запрос на себе (все как у запросов на обновление и вставку).

Работа с БД в Drupal 7 - урок 9 - Запросы обновления (UPDATE)

02/12/2019, by Ivan

Запросы обновления должны всегда использовать конструктор запросов. Различные БД имееют специфические обработчики для LOB (Large OBject, такие как TEXT в MySQL) и поля BLOB (Binary Large OBject), так что уровень абстракции требуется для индивидуальных драйверов для реализации специфических обработчиков.

Запросы обновления должны начинаться с функции db_update():

Работа с БД в Drupal 7 - урок 8 - Запросы вставки (INSERT INTO)

02/12/2019, by Ivan

Запросы вставки всегда должны использовать конструктор запросов. Некоторые БД требуют специальных обработчиков для LOB (Large OBject, такие как текст в MySQL) и BLOB (Binary Large OBject) полей, так что уровень абстракции необходим для индивидуальных драйверов БД для реализации подобных обработчиков.

Запросы вставки начинаются с использования функции db_insert():

Работа с БД в Drupal 7 - урок 7 - Обработка результатов запроса (fetch)

02/12/2019, by Ivan

Запрос выборки всегда будет возвращать результат обработки запроса как 0 или больше записей. Есть несколько путей обработать данные результата запроса, которые вы можете использовать по своему усмотрению.

Наиболее часто результаты используются в виде цикла foreach().

Работа с БД в Drupal 7 - урок 6 - Изменение запроса на лету (hook_query_alter)

02/12/2019, by Ivan

Важной особенностью динамических запросов выбора является возможность других модулей изменять запросы на лету. Это позволяет другим модулям вставлять их собственные инструкции в запрос, тем самым влияя на поведение запроса или применить изменения во время выполнения запроса, например задать разграничение прав к нодам. Существуют 3 компонента изменения запроса на лету, tagging, meta data и hook_query_alter().

Работа с БД в Drupal 7 - урок 5 - Extenders (Расширения)

02/12/2019, by Ivan

Запросы выборки поддерживают расширения (extenders). Расширение дает возможность добавить функциональность к запросу выборки во время выполнения. Эта функциональность может быть дополнительным методом или обрабатывать поведение существующего метода.

Для этого используется в ООП паттерны (design patterns), расширения реализуют таким образом Decorator Pattern. Они прикрепляют дополнительные обязанности к динамическому объекту через предоставления гибкого альтернативного подкласса для метода расширения.

Работа с БД в Drupal 7 - урок 4 - Динамические запросы (SELECT)

02/12/2019, by Ivan

Пожалуй мы подобрались к самой интересной части Database API Drupal: динамические запросы. Динамические запросы называются так, потому что Drupal динамически дописывает строку запроса. Все запросы вставки, обновления, удаления или слияния могут быть динамическими. Запросы выборки могут быть как динамическими, так и статическими. Тем не менее, используйте динамические запросы и для запросов выборки.

Работа с БД в Drupal 7 - урок 3 - Статические запросы (SELECT)

02/12/2019, by Ivan

Наиболее общая форма запроса в Drupal это статический запрос. Статический запрос будет передан в БД дословно. Только запрос выбора (select) может быть статический.

Только в очень простых запросах следует использовать статические запросы. Вам следует использовать динамические запросы если нужно написать сложный запрос, динамически создаваемый запрос или изменяемый после выполнения.

Простой путь выполнить статический запрос через метод запроса: