Es gibt zwei Möglichkeiten, um Werte von Entitäten abzurufen:
- Verwenden Sie
field_get_itemsund erhalten Sie den Wert eines Feldes - Verwenden Sie
entity_metadata_wrapperund erhalten Sie den Wert eines Feldes
Obwohl entity_metadata_wrapperdie Sprachunterschiede abstrahiert werden, ist die API manchmal immer noch umständlich, insbesondere bei Verwendung von PHP 5.3. Wenn Sie beispielsweise den Wert eines Langtextfelds abrufen, gehen Sie normalerweise folgendermaßen vor:
$field = $wrapper->field->value();
print $field['safe_value'];
Glücklicherweise unterstützt PHP 5.4 diese Syntax : print $wrapper->field->value()['safe_value'];.
Aber meine Frage ist mehr über die Leistung besorgt. Wie arbeiten beide? Fragen sie die Datenbank jedes Mal ab, wenn sie einen Wert anfordern? Fordert entity_metadata_wrapperalles auf einmal an? (Besser field_get_itemgeeignet für Einzelwertabfragen.)
Ich bin nicht mutig genug, tief in die Drupal-Quelle einzutauchen.
field_get_items()verursacht keinen Datenbank-Overhead, also denke ich, dass dies ein ziemlich offener und geschlossener Fall ist :)
field_get_items()kein Datenbank-Overhead entsteht? Es muss seine Daten irgendwo bekommen, oder?
entity_metadata_wrapperdie Leistung funktioniert.
field_get_items()sodass der Overhead bereits angefallen ist ... um ehrlich zu sein, ist es in D7 eine etwas erdrosselte Route
field_view_field()dient zum Rendern eines Feldes. Die Funktion zum Abrufen des Werts eines Feldes lautet field_get_items () .