Yanıtlar:
EntityFieldQuery kullanarak elde edebilirsiniz.
D8 için EntityFieldQuery yeniden yazılmıştır.
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();
Bir varlığın alanının değerlerini nasıl getirebilirim?
$query = \Drupal::entityQuery('node')
->condition('status', 1)
->condition('changed', REQUEST_TIME, '<')
->condition('title', 'cat', 'CONTAINS')
->condition('field_tags.entity.name', 'cats');
$nids = $query->execute();
Belirli bir düğümü alan değerine göre yüklemenin en hızlı yolu yöntemi kullanmaktır loadByProperties()
.
Bir veya daha fazla alan değeri belirtirsiniz ve döndürülen alan, alan değerleriyle eşleşen düğümleri içeren bir dizidir:
$nodes = \Drupal::entityTypeManager()
->getStorage('node')
->loadByProperties(['title' => $title]);
Normalde düğümler üzerinde döngü yaparsınız. Sizin durumunuzda belirli bir düğüm arıyorsunuz. Dizide tek bir düğüm de döndürülür, bu nedenle uygulayın reset()
ve hiçbir şey bulunamazsa bu düğümü veya NULL değerini döndürür:
if ($node = reset($nodes)) {
// found $node that matches the title
}
$node = reset...
hash benzersiz olduğundan kodun ( ) ikinci kısmı gerek olmaz varsayalım .
Node::
adı geçen düğümleri yüklemek için kullanmak zorundayım, doğru mu?