web-dev-qa-db-fra.com

Comment imprimer la requête SQL d'une vue frontale?

J'ai installé la dernière Drupal 8.1.1 également module Devel installé il n'y a aucune option pour Afficher le journal des requêtes sur la page de configuration de développement alors qu'il est présent sur le module D7 Devel. J'ai créé une vue avec relation maintenant Je veux afficher la requête SQL de cette vue à l'avant.

Comment imprimer la requête SQL d'une vue frontale?

7
Sanjay

Le module Devel comprend le module webprofiler; vous devez l'activer pour voir le journal des requêtes.

Notez que il y a actuellement un bogue dans le noya dans 8.1 qui l'empêche d'être utilisé.

4
Berdir

Vous pouvez activer sur "Afficher la requête SQL" et "Afficher les autres requêtes exécutées pendant le rendu lors de la prévisualisation en direct" sur "www.example.com/admin/structure/views/settings"

enter image description here

J'espère que cela vous aidera.

6
visabhishek

Bien que vous puissiez installer le module webprofiler, si vous avez déjà un module personnalisé, il peut être plus rapide de le faire:

/**
 * 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

Si vous utilisez la couche d'abstraction de base de données pour exécuter vos propres requêtes, vous pouvez également utiliser la méthode addTag et transmettre le "débogage".

$ query-> addTag ('debug')

2
Todd Bloom

Vous pouvez simplement faire dpq($query->query()); Cela mettra la requête dans la zone de message de votre frontend. Modifier - Vous aurez besoin d'un module de développement pour utiliser cette fonction.

1
Vaibhav Jain

Si quelqu'un cherche l'équivalent Drupal 7 de la réponse de Dalin, la structure est juste un peu différente.

/**
 * 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
Stef Van Looveren