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

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

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

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

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

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

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

DB_OR

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

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

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

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

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

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

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

Создать пользователя сразу на всех сайтах мультисайтинга в Drupal

Июнь 6, 2019 г.

С помощью drush и такой то матери (bash) обойдем все сайты и создадим одного и того же юзера на каждом из сайтов. Долго тянуть не стану - вот текст скрипта: [crayon-69fcaed67f422563920949/] В начале вы задаёте нужные переменные (задайте свои ...

Читать

Изменения настроек поля программно Drupal 7

Май 27, 2020 г.

Если вам программно нужно изменить настройки поля в Drupal, то на помощь приходит Field CRUD API. Это набор функций из файла modules/field/field.crud.inc. ...

Читать

Включить вывод php ошибок в drupal 7

Январь 24, 2020 г.

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

Читать

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»

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



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