Para obter valores de entidades, há duas maneiras:
- Use
field_get_items
e obtenha o valor de um campo - Use
entity_metadata_wrapper
e obtenha o valor de um campo
Embora entity_metadata_wrapper
abstraia as diferenças de idioma, sua API ainda é estranha às vezes, especialmente ao usar o PHP 5.3. Por exemplo, obter o valor de um campo de texto longo geralmente segue esta rota:
$field = $wrapper->field->value();
print $field['safe_value'];
Felizmente, PHP 5.4 suporta esta sintaxe: print $wrapper->field->value()['safe_value'];
.
Mas minha pergunta está mais preocupada com o desempenho. Como eles funcionam? Eles consultam o banco de dados toda vez que solicitam um valor? Será que entity_metadata_wrapper
pede tudo de uma vez? (Tornando-se field_get_item
mais adequado para recuperações de valor único.)
Eu não sou corajoso o suficiente para mergulhar fundo na fonte Drupal.
field_get_items()
incorre zerar sobrecarga de banco de dados, então eu acho que é um caso bastante aberta e fechada :)
field_get_items()
gera zero custo de banco de dados? Tem que ter seus dados em algum lugar, certo?
entity_metadata_wrapper
funciona, em termos de desempenho.
field_get_items()
assim a sobrecarga já foi incorrido ... é um pouco de uma rota estrangulada em D7 para ser honesto
field_view_field()
é para renderizar um campo. A função para obter o valor de um campo é field_get_items () .