답변:
EntityFieldQuery를 사용하여 달성 할 수 있습니다.
D8의 경우 EntityFieldQuery 가 다시 작성되었습니다.
드루팔 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]);
일반적으로 노드를 반복합니다. 귀하의 경우 하나의 특정 노드를 찾고 있습니다. 단일 노드도 배열로 반환되므로 적용 reset()
하고 아무것도 찾지 못하면 노드를 반환하거나 NULL을 반환합니다.
if ($node = reset($nodes)) {
// found $node that matches the title
}
$node = reset...
에는 해시 자체가 고유하기 때문에 코드의 두 번째 부분 ( )이 필요하지 않다고 가정 합니다.
Node::
노드를로드하는 데 사용해야 합니다. 정확합니까?