Câu trả lời:
Bạn có thể đạt được bằng cách sử dụng EntityFieldQuery.
Đối với D8 EntityFieldQuery đã được viết lại.
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();
Làm cách nào để tìm nạp các giá trị của trường thực thể?
$query = \Drupal::entityQuery('node')
->condition('status', 1)
->condition('changed', REQUEST_TIME, '<')
->condition('title', 'cat', 'CONTAINS')
->condition('field_tags.entity.name', 'cats');
$nids = $query->execute();
Cách nhanh nhất để tải một nút cụ thể theo giá trị trường là sử dụng phương thức loadByProperties()
.
Bạn chỉ định một hoặc nhiều giá trị trường và được trả về là một mảng chứa các nút khớp với các giá trị trường:
$nodes = \Drupal::entityTypeManager()
->getStorage('node')
->loadByProperties(['title' => $title]);
Thông thường bạn lặp qua các nút. Trong trường hợp của bạn, bạn đang tìm kiếm một nút cụ thể. Một nút đơn cũng được trả về trong mảng, vì vậy hãy áp dụng reset()
và điều này trả về nút hoặc NULL nếu không tìm thấy gì:
if ($node = reset($nodes)) {
// found $node that matches the title
}
$node = reset...
) vì bản thân hàm băm là duy nhất.
Node::
để tải các nút đã nói, đúng không?