it-swarm-ja.com

node_load()またはentity_load()のどちらをいつ使用すればよいですか?

タイトルはそれをすべて言います。

Entity_loadは、データベースクエリを減らしながら、複数のノードをロードするための効率的で効率的な手段を提供することを理解しているため、そのインスタンスではentity_load()を使用する必要があると思います。しかし、1つのノードだけが必要な場合、どちらを使用すればよいですか?そして、より一般的なentity_load()APIを支持して、node_load()はd8で非推奨になりますか?

同じ質問がおなじみのuser_load()にも当てはまると思います。

25
Torrance

node_loadは、entity_loadの単なるラッパーです。

つまり、node_loadは、node_load_multipleのラッパーであるentity_loadを呼び出します。これは、多くのノードをロードする必要がないかぎり、パフォーマンスに関しては、使用する関数にそれほど大きな違いはないことを意味します。

node_loadにはentity_loadよりも多くの利点があります

  • より簡単です
  • コードを読みやすくする
  • ノードオブジェクトを持つ配列の代わりにノードオブジェクトを返します

したがって、全体として、node_loadは、可能な限り常に使用する必要がある便利な機能であり、さらに多くのノードをロードする必要がある場合はnode_load_multipleに頼る必要があります。

entity_loadは、タイプがわからない場合、または変数に格納する場合にエンティティをロードするために使用する必要があります。

entity_load($type, ...);
33
googletorp

ロードするノードが1つの場合はnode_load()を使用し、ノードが複数ある場合はnode_load_multiple()を使用します。エンティティタイプが事前にわからない場合は、entity_load()を直接使用します(例:entity_load($type, array($id)))。

Entity_load()の名前に一貫性がないことに注意してください。複数の結果をロードして結果の配列を返すことができるため、実際にはentity_load_multiple()である必要があります。

9
Berdir

node_load() は、エンティティAPIがDrupalに導入される前に存在していた関数です。 entity_load() は、_$vid_などのノードオブジェクトのロードに固有のパラメータを受け入れることです。関数呼び出し node_load_multiple() ;互換性の理由、および必要なパラメーターが少ないため、これは役立ちます。

_$node = node_load($nid);
_
_$nodes = entity_load('node', array($nid));
_

Drupal 8では、node_load()node_load_multiple()およびentity_load()は非推奨になりました。これは、Drupal 9の安定版リリース時に削除されます)。
さらに、Drupal 8では、これらの関数の呼び出しをDrupal 8で変更する必要があります。

  • node_load() は、2番目のパラメータとして_$vid_を使用しません
  • entity_load() および node_load_multiple() 2番目のパラメータとして_$condition_を使用しないでください(Drupal 7ですでに非推奨としてマークされています)
5
kiamlaluno