エンティティから値を取得するには、2つの方法があります。
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'];
。
しかし、私の質問はパフォーマンスについてより懸念しています。どちらもどのように機能しますか?彼らは値を要求するたびにデータベースをクエリしますか?DOESは、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()です。