web-dev-qa-db-ja.com

EntityQueryをデバッグする方法は?

「BETWEEN」演算子を使用したクエリがあり、結果が得られるはずです。作成された実際のSQLクエリを表示する方法はありますか?

これが私のエンティティクエリです:

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

もちろん、私は自分の値が期待したものであることを確認しました。また、「<」、「>」、変数なしで実際の値を試し、何も問題がないことを確認しました。

ここでは ' Geolocation Field 'モジュールを使用しています。

5
pbonnefoi

Develモジュールを使用する場合、エンティティクエリをデバッグするための簡単な方法は、debugタグを使用することです(クエリに$query->addTag('debug')を追加するだけです)。ここに例

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

そしてその結果

enter image description here

10
marco