Es gibt zwei Möglichkeiten, um Werte von Entitäten abzurufen:
- Verwenden Sie
field_get_items
und erhalten Sie den Wert eines Feldes - Verwenden Sie
entity_metadata_wrapper
und erhalten Sie den Wert eines Feldes
Obwohl entity_metadata_wrapper
die 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_wrapper
alles auf einmal an? (Besser field_get_item
geeignet 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_wrapper
die 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 () .