私のユースケースでは、一意の語彙を参照する2つのフィールドを持つエンティティがあります。
ニュース:-タグ(エンティティ参照)-カテゴリ(エンティティ参照)
これらの参照のいずれかでクエリを実行すると結果が表示されますが、両方のクエリ(ANDフィルター)を実行しても結果は表示されません。私は今までにトリプルチェックしており、クエリしているタグとカテゴリの両方を含むエンティティがあります。
これはユーザーエラーですか、それともDrupalのバグですか?
$query = \Drupal::entityQuery('node')
->condition('status', 1)
->condition('type', 'news')
;
$group = $query->andConditionGroup()
->condition('field_tag.entity.name', ['cars'], 'IN')
->condition('field_category.entity.name', ['sport'], 'IN')
;
$query->condition($group);
$nids = $query->execute();
編集:entity.valueの代わりに生の値をクエリすることで回避策を見つけました。これは望ましくない状況ですが
$query = \Drupal::entityQuery('node')
->condition('status', 1)
->condition('type', 'news')
;
$group = $query->andConditionGroup()
->condition('field_tag.entity.name', ['cars'], 'IN')
->condition('field_category', [1], 'IN')
;
$query->condition($group);
$nids = $query->execute();