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


7

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

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

回答:


4

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

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


6

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

ここに画像の説明を入力してください

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


高速応答のThnx、すべてのオプションが既に有効になっています(「SQLクエリを表示」および「ライブプレビュー中にレンダリング中に実行される他のクエリを表示」)これは管理者プレビューのみですエンドユーザー(認証された匿名ユーザー)に必要です)。
Sanjay、2016年

4

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());
}

2

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

$ query-> addTag( 'debug')


1

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


0
$query = $db->query('MY QUERY');
print_r($query); // In the result you'll see a key "queryString" containing the actual query

0

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

/**
 * Implements hook_views_post_execute().
 */
function MY_MODULE_views_post_execute($view) {
  if ($view->name != 'MY_SPECIAL_VIEW') {
    return;
  }
  dpq($view->build_info['query']);
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.