it-swarm.com.de

Wie debugge ich EntityQuery?

Ich habe eine Abfrage mit einem 'ZWISCHEN'-Operator und sollte einige Ergebnisse haben. Gibt es eine Möglichkeit, die tatsächlich durchgeführte SQL-Abfrage anzuzeigen?

Hier ist meine Entitätsabfrage:

    $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();

Natürlich habe ich sichergestellt, dass meine Werte den erwarteten entsprechen, und ich habe auch versucht, mit '<', '>' und ohne Vars, aber mit tatsächlichen Werten, um sicherzustellen, dass dort nichts falsch ist.

Ich verwende hier das Modul ' Geolocation Field '.

5
pbonnefoi

Wenn Sie das Entwicklungsmodul verwenden, kann ein einfacher Ansatz zum Debuggen von Entitätsabfragen das Tag debug sein (fügen Sie einfach $query->addTag('debug') zu Ihrer Abfrage hinzu). Hier ein Beispiel

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

Und das Ergebnis

(enter image description here

10
marco