Jawaban:
Anda dapat mencapai dengan menggunakan EntityFieldQuery.
Untuk D8 EntityFieldQuery telah ditulis ulang.
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();
Bagaimana cara mengambil nilai bidang entitas?
$query = \Drupal::entityQuery('node')
->condition('status', 1)
->condition('changed', REQUEST_TIME, '<')
->condition('title', 'cat', 'CONTAINS')
->condition('field_tags.entity.name', 'cats');
$nids = $query->execute();
Cara tercepat untuk memuat simpul tertentu berdasarkan nilai bidang adalah dengan menggunakan metode ini loadByProperties()
.
Anda menentukan satu atau lebih nilai bidang dan dikembalikan adalah array yang berisi node yang cocok dengan nilai bidang:
$nodes = \Drupal::entityTypeManager()
->getStorage('node')
->loadByProperties(['title' => $title]);
Biasanya Anda mengulang simpul. Dalam kasus Anda, Anda mencari satu simpul tertentu. Satu node juga dikembalikan dalam array, jadi terapkan reset()
dan ini mengembalikan node atau NULL jika tidak ada yang ditemukan:
if ($node = reset($nodes)) {
// found $node that matches the title
}
$node = reset...
) karena hash itu sendiri unik.
Node::
untuk memuat kata node, benar?