web-dev-qa-db-ja.com

entityQueryを使用して、1つの特定の値を含む(他は含まない)特定の複数値フィールドを持つノードを検索する方法

エンティティ参照フィールド「field_things」があり、0個以上の「thing」ノードを参照できるノードタイプ「group」があります。 entityQueryを使用して、field_thingsの値が1つだけであり、その値が特定の「もの」であるすべての「グループ」を見つけたいと思います。

これらの2つの要件をどのように組み合わせるかは、ドキュメントからはわかりません。

4
kamm

したがって、entityQuery()はこれを実行できないようですが、entityQueryAggregate()は実行できます。以下は、元の投稿の目的を達成する例です。

_$thing_id = 101;
$q = \Drupal::entityQueryAggregate('node')
  ->condition('type', 'group')
  ->condition('field_things', $thing_id)
  ->groupBy('nid')
  ->conditionAggregate('field_things', 'COUNT', 1);
$res = $q->execute();
_

dpm($res)を実行すると、次のように表示されます。

_Array
(
  [0] => Array
    (
      [nid] => 85
      [field_things_count] => 1
    )

  [1] => Array
    (
      [nid] => 33
      [field_things_count] => 1
    )

  [2] => Array
    (
      [nid] => 57
      [field_things_count] => 1
    )

  [3] => Array
    (
      [nid] => 54
      [field_things_count] => 1
    )
)
_
4
kamm