Я хочу загрузить определенный узел. Я не знаю идентификатор узла, но знаю, что у него есть определенное уникальное хеш-поле, и я знаю этот хеш.
Я хочу загрузить узел через поле хеша. Как я могу это сделать?
Вы можете достичь с помощью EntityFieldQuery.
Для D8 EntityFieldQuery был переписан.
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();
Как мне получить значения поля сущности?
$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::
для загрузки указанных узлов, правильно?Самый быстрый способ загрузить определенный узел по значению поля - использовать метод
loadByProperties()
.Вы указываете одно или несколько значений поля и возвращаете массив, содержащий узлы, соответствующие значениям поля:
Обычно вы перебираете узлы. В вашем случае вы ищете один конкретный узел. Отдельный узел также возвращается в массиве, поэтому применяется,
reset()
и это возвращает либо узел, либо NULL, если ничего не было найдено:источник
$node = reset...
), поскольку сам хеш уникален.