Answers:
您可以使用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();
通过字段值加载特定节点的最快方法是使用方法loadByProperties()
。
您指定一个或多个字段值,然后返回一个数组,其中包含与字段值匹配的节点:
$nodes = \Drupal::entityTypeManager()
->getStorage('node')
->loadByProperties(['title' => $title]);
通常,您遍历节点。在您的情况下,您正在寻找一个特定的节点。数组中还会返回单个节点,因此套用apply reset()
,如果什么也没找到,则返回节点或NULL:
if ($node = reset($nodes)) {
// found $node that matches the title
}
$node = reset...
),因为哈希本身是唯一的。
Node::
来加载所述节点,对吗?