web-dev-qa-db-fra.com

Comment déboguer EntityQuery?

J'ai une requête avec un opérateur 'BETWEEN' et je devrais avoir des résultats. Existe-t-il un moyen d'afficher la requête SQL réelle effectuée?

Voici ma requête d'entité:

    $query = $this->entity_query->get('node');
    $query->condition('type', 'store');
    $query->condition('status', 1);
    if ($lat_min && $lng_min && is_numeric($lat_min) && is_numeric($lng_min) && $lat_max && $lng_max && is_numeric($lat_max) && is_numeric($lng_max)) {
      $query->condition('field_store_geolocation.lat', [$lat_min, $lat_max], 'BETWEEN');
      $query->condition('field_store_geolocation.lng', [$lng_min, $lng_max], 'BETWEEN');
    }
    $nids = $query->execute();

Bien sûr, je me suis assuré que mes valeurs étaient celles attendues et j'ai également essayé avec '<', '>' et sans vars mais avec des valeurs réelles pour m'assurer que rien n'allait mal.

J'utilise ici le module ' Geolocation Field '.

5
pbonnefoi

Si vous utilisez le module devel, une approche simple pour déboguer la requête d'entité pourrait être d'utiliser la balise debug (ajoutez simplement $query->addTag('debug') à votre requête). Voici un exemple

$query = $this->entity_query->get('node');
$query->condition('status', NODE_PUBLISHED);
$query->addTag('debug');
$query->execute();

Et le résultat

enter image description here

10
marco