Para obtener valores de entidades, hay dos formas:
- Use
field_get_itemsy obtenga el valor de un campo - Use
entity_metadata_wrappery obtenga el valor de un campo
Aunque entity_metadata_wrapperabstrae las diferencias de idioma, su API todavía es incómoda a veces, especialmente cuando se usa PHP 5.3. Por ejemplo, obtener el valor de un campo de texto largo generalmente sigue esta ruta:
$field = $wrapper->field->value();
print $field['safe_value'];
Afortunadamente, PHP 5.4 es compatible con esta sintaxis: print $wrapper->field->value()['safe_value'];.
Pero mi pregunta está más preocupada por el rendimiento. ¿Cómo funcionan ambos? ¿Consultan la base de datos cada vez que solicitan un valor? ¿ entity_metadata_wrapperSolicita todo a la vez? (Hacer field_get_itemmás adecuado para recuperaciones de un solo valor).
No soy lo suficientemente valiente como para sumergirme profundamente en la fuente de Drupal.
field_get_items()incurre en cero sobrecarga de la base de datos, así que creo que es un caso bastante abierto y cerrado :)
field_get_items()incurre en gastos generales de base de datos cero? Tiene que obtener sus datos en alguna parte, ¿verdad?
entity_metadata_wrapperfunciona, en cuanto al rendimiento.
field_get_items()para que la sobrecarga ya se haya incurrido ... es un poco una ruta estrangulada en D7 para ser honesto
field_view_field()es para representar un campo. La función para obtener el valor de un campo es field_get_items () .