Réponses:
Vous pouvez y parvenir en utilisant EntityFieldQuery.
Pour D8 EntityFieldQuery a été réécrit.
Drupal 8:
$query = \Drupal::entityQuery('entity_test');
$default_langcode_group = $query->andConditionGroup()
->condition('user_id', $properties[$default_langcode]['user_id'], '=', $default_langcode)
->condition('name', $properties[$default_langcode]['name'], '=', $default_langcode);
$langcode_group = $query->andConditionGroup()
->condition('name', $properties[$langcode]['name'], '=', $langcode)
->condition("$this->field_name.value", $field_value, '=', $langcode);
$result = $query
->condition('langcode', $default_langcode)
->condition($default_langcode_group)
->condition($langcode_group)
->sort('name', 'ASC', $default_langcode)
->execute();
Comment récupérer les valeurs du champ d'une entité?
$query = \Drupal::entityQuery('node')
->condition('status', 1)
->condition('changed', REQUEST_TIME, '<')
->condition('title', 'cat', 'CONTAINS')
->condition('field_tags.entity.name', 'cats');
$nids = $query->execute();
La façon la plus rapide de charger un nœud spécifique par valeur de champ consiste à utiliser la méthode loadByProperties()
.
Vous spécifiez une ou plusieurs valeurs de champ et renvoyé est un tableau contenant les nœuds correspondant aux valeurs de champ:
$nodes = \Drupal::entityTypeManager()
->getStorage('node')
->loadByProperties(['title' => $title]);
Normalement, vous bouclez sur les nœuds. Dans votre cas, vous recherchez un nœud spécifique. Un seul nœud est également renvoyé dans le tableau, alors appliquez reset()
et cela renvoie le nœud ou NULL si rien n'a été trouvé:
if ($node = reset($nodes)) {
// found $node that matches the title
}
$node = reset...
) car le hachage lui-même est unique.
Node::
pour charger lesdits nœuds, n'est-ce pas?