Chcę załadować określony węzeł. Nie znam identyfikatora węzła, ale wiem, że ma on pewne pole skrótu, które jest unikalne i znam ten skrót.
Chcę załadować węzeł za pomocą pola skrótu. Jak mogę to zrobić?
Możesz to osiągnąć za pomocą EntityFieldQuery.
Dla D8 EntityFieldQuery został przepisany.
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();
Jak pobrać wartości pola encji?
$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::
do załadowania wspomnianych węzłów, prawda?Najszybszym sposobem na załadowanie określonego węzła według wartości pola jest użycie metody
loadByProperties()
.Podajesz jedną lub więcej wartości pól, a zwracana jest tablica zawierająca węzły pasujące do wartości pól:
Zwykle zapętlasz węzły. W twoim przypadku szukasz jednego konkretnego węzła. Pojedynczy węzeł jest również zwracany w tablicy, więc zastosuj,
reset()
a to zwróci węzeł lub NULL, jeśli nic nie zostanie znalezione:źródło
$node = reset...
), ponieważ sam skrót jest unikalny.