Конструктор запросов db_select позволяет абстрагироваться от движка базы данных. Если запрос довольно сложный, то на этапе тестирования может потребоваться, что называется, убедиться в том, что конечный запрос на языке SQL к базе именно тот, что вы ожидаете.
Класс SelectQuery даёт эту возможность через реализацию магического метода __toString().
Покажу на коротком примере как это работает:
|
|
$q = db_select('node', 'n'); $q = $q->fields('n', array('nid')) ->condition('n.type', 'banner') ->condition('n.status', NODE_PUBLISHED) ->orderRandom() ->range(0, 1); $sqlString = (string) $q; // для вывода воспользуемся функцией модуля Devel dpm($sqlString); |
Мы получим следующую строку запроса:
|
|
SELECT n.nid AS nid, RAND() AS random_field FROM {node} n WHERE (n.type = :db_condition_placeholder_0) AND (n.status = :db_condition_placeholder_1) ORDER BY random_field ASC LIMIT 1 OFFSET 0 |
Как видите это не сам запрос, но вполне читаемый SQL шаблон. Для вывода значений подставляемых плейсхолдеров, воспользуйтесь функцией SelectQuery::arguments().
Drupal 7
Данная запись опубликована в 11.04.2019 13:35 и размещена в рубрике Drupal.
Вы можете перейти в конец страницы и оставить ваш комментарий.
Мало букафф? Читайте есчо !
Декабрь 7, 2017 г.
Один раз начав работать с EntityFieldQuery, вы уже не захотите городить SQL запросы с джойнами таблиц полей сущностей. Что то сложное, возможно, сделать будет слишком трудно на этом конструкторе, но типовые выборки данных делать приятно, быстро и удобно. ...
Читать
Июнь 6, 2019 г.
С помощью drush и такой то матери (bash) обойдем все сайты и создадим одного и того же юзера на каждом из сайтов.
Долго тянуть не стану - вот текст скрипта:
[crayon-69d1daf44ec75907683823/]
В начале вы задаёте нужные переменные (задайте свои ...
Читать
Июнь 28, 2019 г.
Привычное для пользователей поведение модального окна изначально не реализовано в ctools. Давайте добавим немного js, реализующего нужный функционал.
Код универсален для модального окна создаваемого ctools, т.к. привязан к верстке окна:
[crayon-69d1daf44ee42016201429/] ...
Читать
Октябрь 20, 2019 г.
Столкнулся со следующим неприятным багом, при использовании модуля pathauto, совместно с модулем транслитерации: Drupal генерирует "обрезанные" синонимы адресов страниц.
Длина получаемого синонима плавала от 40-70 символов, и я никак не мог понять ...
Читать