Drupal 8でエンティティクエリをデバッグするにはどうすればよいですか?


9

Drupal 8でエンティティクエリのクエリを印刷するためのすぐに使えるソリューションはありますか?

現在、私は一種のハックを使用しています:

->addTag('debug')

そしてカスタムモジュールで:

function mymodule_query_alter($query) {
  if ($query->hasTag('debug')) {
    mymodule_query_debug($query);
  }
}

そしてデバッグ関数:

function mymodule_query_debug($query) {

  $sql = (string) $query;
  $quoted = array();
  foreach ((array) $query->arguments() as $key => $val) {
    if (is_array($val)) {
      $val = implode(', ',$val);
    }
    $quoted[$key] = \Drupal::database()->quote($val);
  }
  $sql = strtr($sql, $quoted);
  $sql = str_replace('}', '', $sql);
  $sql = str_replace('{', '', $sql);
  print_r($sql);
  die();
}

回答:


5

Drupal 8には、DevelモジュールとWebプロファイラーモジュールがあります。後者のモジュールは、有効になると、ページの下部に適切な権限を持つユーザー向けのツールバーをインストールします。このツールバー内のデータベースボタンをクリックすると、最後のリクエスト中に実行されたすべてのデータベースクエリを表示する検査ページが表示されます。

ブラウザーリクエストを通じてエンティティクエリをトリガーできる場合は、デバッグする特定のエンティティクエリのDBクエリのリストを検査できるはずです。


わかりました、すごい、それを試してみます。
oknate 2016年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.