it-swarm.com.de

Wie verwende ich entityQuery, um Knoten mit einem bestimmten Feld mit mehreren Werten zu finden, das einen bestimmten Wert enthält (und keine anderen)?

Ich habe einen Knotentyp "Gruppe" mit einem Entitätsreferenzfeld "field_things", das auf null oder mehr "Ding" -Knoten verweisen kann. Ich möchte entityQuery verwenden, um alle "Gruppen" zu finden, die genau einen Wert für field_things haben, und dieser Wert ist eine bestimmte "Sache".

Ich kann den Dokumenten nicht entnehmen, wie diese beiden Anforderungen kombiniert werden sollen.

4
kamm

Es scheint also, dass entityQuery() dies nicht kann, aber entityQueryAggregate() kann. Unten sehen Sie ein Beispiel, mit dem das Ziel des ursprünglichen Beitrags erreicht wird:

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

Wenn Sie dpm($res) ausführen, wird Folgendes angezeigt:

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