Создание условий `или` в запросах через 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

Январь 17, 2019 г.

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

Читать

Удаление nodequeue программно

Май 28, 2021 г.

Небольшой сниппет (snippet) по удалению сущностей nodequeue из кода. Может быть полезно при миграции данных. Удобно оперировать с машинным именем нод-кью, но функция удаления требует ID, потому код обычно обретает следующие формы: [crayon-69193db57b004550116114/] ...

Читать

Ctools modal закрытие при клике вне модального окна

Июнь 28, 2019 г.

Привычное для пользователей поведение модального окна изначально не реализовано в ctools. Давайте добавим немного js, реализующего нужный функционал. Код универсален для модального окна создаваемого ctools, т.к. привязан к верстке окна: [crayon-69193db57b241686458898/] ...

Читать

Удаление поля из entity в Drupal программно

Январь 10, 2020 г.

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

Читать
 

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

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



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