Чтобы получить значения от сущностей, есть два способа:
- Используйте
field_get_items
и получите значение поля - Используйте
entity_metadata_wrapper
и получите значение поля
Хотя entity_metadata_wrapper
абстрагируется от языковых различий, его API иногда все еще неуклюж, особенно при использовании PHP 5.3. Например, получение значения длинного текстового поля обычно идет по этому пути:
$field = $wrapper->field->value();
print $field['safe_value'];
К счастью, PHP 5.4 поддерживает этот синтаксис: print $wrapper->field->value()['safe_value'];
.
Но мой вопрос больше касается производительности. Как они оба работают? Они запрашивают базу данных каждый раз, когда запрашивают значение? Запрашивает ли entity_metadata_wrapper
все сразу? (Создание field_get_item
более подходящих для поиска одного значения.)
Я не достаточно смел, чтобы глубоко погрузиться в источник Drupal.
field_get_items()
требует никаких затрат на базу данных, так что я думаю, что это довольно открытый и закрытый случай :)
field_get_items()
получается, что у вас нет базы данных? Он должен где-то получить свои данные, верно?
entity_metadata_wrapper
работает, с точки зрения производительности.
field_get_items()
так что накладные расходы уже были понесены ... если честно, это немного удушенный маршрут в D7
field_view_field()
для рендеринга поля. Функция для получения значения поля - field_get_items () .