Wie kann ich Entitätsabfragen in Drupal 8 debuggen?

9

Gibt es eine sofort einsatzbereite Lösung zum Drucken der Abfrage einer Entitätsabfrage in Drupal 8?

Im Moment benutze ich eine Art Hack und füge hinzu:

->addTag('debug')

und dann in einem benutzerdefinierten Modul:

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

und dann die Debug-Funktion:

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

Antworten:

5

Für Drupal 8 gibt es das Devel- Modul und das Web Profiler- Modul. Das letztere Modul installiert nach seiner Aktivierung eine Symbolleiste am unteren Rand der Seite für Benutzer mit den entsprechenden Berechtigungen. Über die Datenbankschaltfläche in dieser Symbolleiste gelangen Sie zu einer Inspektionsseite, auf der alle Datenbankabfragen angezeigt werden, die während der letzten Anforderung ausgeführt wurden.

Wenn Sie die Entitätsabfrage über eine Browseranforderung auslösen können, sollten Sie in der Lage sein, die Liste der DB-Abfragen auf die spezifische Entitätsabfrage zu überprüfen, die Sie debuggen möchten.

Shawn Conn
quelle
ok, super, werde das mal ausprobieren.
oknate