Отримати значення від сутності, є два способи:
- Використовуйте
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
більш придатним для однозначного пошуку.)
Я не хоробрий, щоб зануритися вглиб Друпальського джерела.
field_get_items()
нульові накладні дані, тому я думаю, що це досить відкритий і закритий випадок :)
field_get_items()
нульові накладні дані? Він повинен десь отримати свої дані, правда?
entity_metadata_wrapper
працює, наскільки ефективно.
field_get_items()
щоб накладні витрати вже були понесені ... це трохи задушений маршрут у D7, якщо чесно
field_view_field()
призначений для візуалізації поля. Функція отримання значення поля - field_get_items () .