web-dev-qa-db-ja.com

フロントエンドでビューのSQLクエリを印刷するにはどうすればよいですか?

私は最新のDrupal 8.1.1もインストールしました。Develモジュールもインストールしました。D7のDevelモジュールにある間、Devel設定ページにクエリログを表示するオプションはありません。関係を含むビューを作成しましたそのビューのSQLクエリをフロントエンドに表示したいと思います。

フロントエンドでビューのSQLクエリを印刷するにはどうすればよいですか?

7
Sanjay

Develモジュールにはwebprofilerモジュールが含まれています。クエリログを表示するには、これを有効にする必要があります。

8.1には 現在コアにバグがある であるため使用できないことに注意してください。

4
Berdir

「www.example.com/admin/structure/views/settings」の「SQLクエリを表示する」と「ライブプレビュー中にレンダリング中に実行される他のクエリを表示する」を有効にすることができます。

enter image description here

それがあなたを助けることを願っています。

6
visabhishek

Webprofilerモジュールをインストールすることもできますが、カスタムモジュールをすでに入手している場合は、これを行う方が速い場合があります。

/**
 * Implements hook_views_post_execute().
 */
function MY_MODULE_views_post_execute(ViewExecutable $view) {
  if ($view->id() != 'MY_SPECIAL_VIEW') {
    return;
  }
  dpq($view->query->query());
}
4
Dalin

データベース抽象化レイヤーを使用して独自のクエリを実行している場合は、addTagメソッドを使用して 'debug'を渡すこともできます。

$ query-> addTag( 'debug')

2
Todd Bloom

単純にdpq($query->query());を実行できます。これにより、クエリがフロントエンドのメッセージ領域に配置されます。編集-この機能を使用するには、開発モジュールが必要です。

1
Vaibhav Jain

誰かがDrupal 7 Dalinの答えと同等のものを探している場合、構造は少し異なります。

/**
 * Implements hook_views_post_execute().
 */
function MY_MODULE_views_post_execute($view) {
  if ($view->name != 'MY_SPECIAL_VIEW') {
    return;
  }
  dpq($view->build_info['query']);
}
0
Florian Müller
$query = $db->query('MY QUERY');
print_r($query); // In the result you'll see a key "queryString" containing the actual query
0