Antworten:
Sie können mit EntityFieldQuery erreichen.
Für D8 wurde EntityFieldQuery umgeschrieben.
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();
Wie rufe ich die Werte des Felds einer Entität ab?
$query = \Drupal::entityQuery('node')
->condition('status', 1)
->condition('changed', REQUEST_TIME, '<')
->condition('title', 'cat', 'CONTAINS')
->condition('field_tags.entity.name', 'cats');
$nids = $query->execute();
Die schnellste Methode zum Laden eines bestimmten Knotens nach Feldwert ist die Verwendung der Methode loadByProperties()
.
Sie geben einen oder mehrere Feldwerte an und geben ein Array zurück, das die Knoten enthält, die mit den Feldwerten übereinstimmen:
$nodes = \Drupal::entityTypeManager()
->getStorage('node')
->loadByProperties(['title' => $title]);
Normalerweise schleifen Sie über die Knoten. In Ihrem Fall suchen Sie einen bestimmten Knoten. Ein einzelner Knoten wird auch im Array zurückgegeben, also gilt reset()
und dies gibt entweder den Knoten oder NULL zurück, wenn nichts gefunden wurde:
if ($node = reset($nodes)) {
// found $node that matches the title
}
$node = reset...
) nicht benötigen würde, da der Hash selbst eindeutig ist.
Node::
zum Laden der Knoten verwenden, richtig?