Создание условий `или` в запросах через db API Drupal

Конструирование запросов через Drupal DB API необходимо для поддержки совместимости кода для разных источников данных.

Друпал предоставляет и более прямые средства для написания запросов вроде db_query, и никто не может запретить вам применить функционал нативных php библиотек, но использование таких подходов может потребовать переписать код программы при смене одного движка баз данных на другой.

Здесь я хотел бы показать всего лишь один элемент использования конструктора, а именно формирование OR связей между двумя и более условиями.

Рассмотрим простой запрос db_select к таблице node :

Запрос пытается выбрать статьи типа event, которые опубликованы. Оба условия связаны между собой логическим AND.

Как теперь, например, расширить список типов публикаций в условии, добавив туда ‘news’?

DB_OR

Можно воспользоваться специальным конструктором db_or().

Условия внутри этой коллекции связаны по OR. Осталось подставить это в наш прежний запрос.

Полученное условие выглядит так:

Частный случай

В рассмотренном частном случае было бы правильно использовать другую возможность.

В такой записи будет использован SQL оператор IN, что равнозначно объединению по OR для каждого отдельного значения.

Мало букафф? Читайте есчо !

Программное создание параграфов (ParagraphsItemEntity) в Drupal

Май 24, 2019 г.

Пример кода, как программно реализовать создание параграфа (речь идет о модуле - paragraphs). Обычно параграфы создаются редакторами через админку, но иногда требуется создать новый параграф с помощью кода, например, при импорте данных, структурных ...

Читать

Возможные проблемы Invalid form POST data

Октябрь 24, 2019 г.

Браузер сообщает об ошибке всплывающим окном вроде того, что на скриншоте. Сообщается, что AJAX завершен неправильно. Но основной симптом - что не работают ...

Читать

Вывод меню с фиксированной глубиной в Drupal

Март 25, 2019 г.

Блок меню core модуля menu позволяет вывести всю иерархию меню полностью, но иногда требуется показать только 1-2 верхних уровня. Посмотрим как организовать такой вывод. Drupal в модуле menu использует функцию menu_tree('ИМЯ МЕНЮ'), чтобы рендерить ...

Читать

Error: Class 'Aws\S3\StreamWrapper' not found (Drupal 7)

Август 29, 2022 г.

При обновлении модуля s3fs с ветки 7.x-2.x -> 7.x->3.x друпалу не удаётся найти указанный класс. Все необходимые шаги по апгрейду сделаны, как описано в readme.txt модуля. Это проблема инициализации библиотеки awssdk в s3fs_libraries_info(). Drupal ...

Читать
 

Комментарии к «Создание условий `или` в запросах через db API Drupal»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: