Сложные представления (views) требуют понимания того, что в итоге получилось, какой запрос сформировался в результате магии и такой то матери в конструкторе View UI.
Итак, как получить SQL запрос, который формируется во views drupal?
В этом нам поможет hook_views_pre_execute().
Внутри реализации стоит ограничить вывод только контекстом интересующего нас представления. Это можно сделать по имени views.
1 2 3 4 5 |
function YOUR_MODULE_NAME_views_pre_execute(&$view) { if ($view->name == 'YOUR_MACHINE_VIEWS_NAME') { drupal_set_message((string) ($view->build_info['query']) ); } } |
Так вы получите представление о запросе, но он будет содержать вставки вроде :placeholder_1 и т.п, т.е. являться шаблоном запроса, а не готовой SQL строкой.
Как получить сразу SQL?
Подключите модуль devel. Этот сервисный модуль предоставляет множество функций для форматирования и вывода отладочной информации. Нам понадобится функция — dpq().
1 2 3 4 5 |
function YOUR_MODULE_NAME_views_pre_execute(&$view) { if ($view->name == 'YOUR_MACHINE_VIEWS_NAME') { dpq($view->build_info['query']); } } |
Теперь мы получим готовый mySQL запрос.