Je veux charger un certain nœud. Je ne connais pas l'id du nœud mais je sais qu'il a un certain champ de hachage qui est unique et je connais ce hachage.
Je veux charger le nœud via le champ de hachage. Comment puis je faire ça?
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();
Node::
pour charger lesdits nœuds, n'est-ce pas?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:
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é:la source
$node = reset...
) car le hachage lui-même est unique.