如何显示Drupal视图执行的查询

Mec*_*are 9 php drupal drupal-views drupal-6

我想显示在drupal视图中执行的查询.目前在视图编辑器中它显示了查询但是我需要在我的代码中使用该查询来下载视图的excel版本.

有没有办法以与在视图菜单的"编辑器"窗口中显示相同的方式获取执行的查询?我希望在显示视图时这样做.

我打算在这里做的是在页脚中捕获查询,并将该查询发布到将发回XLS结果集的进程.所以我想查看视图用于显示结果的确切查询.

Fel*_*Eve 7

或者你可以hook_views_pre_execute和devel的dpq函数一起使用:

function MY_MODULE_views_pre_execute(&$view) {
  dpq($view->build_info['query']);
}
Run Code Online (Sandbox Code Playgroud)


Owe*_*wen 3

查询存在于视图对象中。根据您想要使用它的位置,您可能需要在视图预处理函数中添加变量,或者在调用视图的位置(如果以编程方式调用它)。

如果您只是使用默认模板,则可以在那里访问它:

// ex. somewhere in your views-view--VIEW_NAME.tpl.php
<?php print db_prefix_tables($view->build_info['query']); ?>
Run Code Online (Sandbox Code Playgroud)

不过,如果您的进程采用任意 SQL,请务必小心,最好使用视图名称来调用它,并让它以编程方式根据需要获取结果。或者,在视图上有一个辅助显示,直接以 XLS 结果集返回结果。