Quiero cargar un determinado nodo. No sé la identificación del nodo, pero sí sé que tiene un cierto campo hash que es único y sé que ese hash.
Quiero cargar el nodo a través del campo hash. ¿Cómo puedo hacer eso?
Puede lograrlo usando EntityFieldQuery.
Para D8, EntityFieldQuery ha sido reescrito.
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();
¿Cómo obtengo los valores del campo de una entidad?
$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::
para cargar dichos nodos, ¿correcto?La forma más rápida de cargar un nodo específico por valor de campo es usar el método
loadByProperties()
.Usted especifica uno o más valores de campo y se devuelve una matriz que contiene los nodos que coinciden con los valores de campo:
Normalmente, recorre los nodos. En su caso, está buscando un nodo específico. También se devuelve un solo nodo en la matriz, por lo que se aplica
reset()
y esto devuelve el nodo o NULL si no se encontró nada:fuente
$node = reset...
) ya que el hash en sí es único.