web-dev-qa-db-fra.com

Comment puis-je déboguer des requêtes d'entité dans Drupal 8?

Existe-t-il une solution prête à l'emploi pour imprimer la requête d'une requête d'entité dans Drupal 8?

En ce moment, j'utilise une sorte de hack, ajoutant:

->addTag('debug')

puis dans un module personnalisé:

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

puis la fonction de débogage:

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

Pour Drupal 8, il y a le module Devel et le module Web Profiler . Ce dernier module, une fois activé, installe une barre d'outils à la en bas de la page pour les utilisateurs disposant des autorisations appropriées. Le bouton de base de données dans cette barre d'outils vous amène à une page d'inspection qui affiche toutes les requêtes de base de données exécutées lors de la dernière demande.

Si vous êtes en mesure de déclencher la requête d'entité via n'importe quelle demande de navigateur, vous devriez pouvoir inspecter la liste des requêtes de base de données pour la requête d'entité spécifique que vous cherchez à déboguer.

5
Shawn Conn