Welche soll ich verwenden und wann: node_load () oder entity_load ()?

24

Titel sagt alles.

Ich verstehe, dass entity_load ein performantes und effizientes Mittel zum Laden mehrerer Knoten bietet, während Datenbankabfragen reduziert werden. Daher gehe ich in diesem Fall davon aus, dass ich entity_load () verwenden sollte. Aber wenn ich nur einen Knoten haben möchte, welchen soll ich verwenden? Und wird node_load () in d8 zugunsten der allgemeineren entity_load () - API veraltet sein?

Ich denke, die gleiche Frage gilt auch für die vertraute user_load ().

Torrance
quelle
3
Ugh ... hätte den Code zuerst ein wenig lesen sollen. Node_load ist nur ein Wrapper mit einigen Argumentprüfungen für node_load_multiple, der selbst ein Wrapper für entity_load ist. Die Leistung wird also auch nicht anders sein, außer wenn Sie entity_load () direkt aufrufen, sparen Sie sich möglicherweise ein paar zusätzliche Funktionsaufrufe. Siehe api.drupal.org/api/drupal/modules--node--node.module/function/… und api.drupal.org/api/drupal/modules--node--node.module/function/… .
Torrance

Antworten:

32

node_loadist nur ein schickes Deckblatt für entity_load.

Das ist ein Wrapper für node_loadAnrufe . Dies bedeutet, dass es hinsichtlich der Leistung keinen großen Unterschied gibt, welche Funktion Sie verwenden, es sei denn, Sie müssen viele Knoten laden.node_load_multipleentity_load

node_load hat viele Vorteile gegenüber entity_load

  • Es ist einfacher
  • Es erhöht die Lesbarkeit des Codes
  • es gibt das Knotenobjekt anstelle eines Arrays mit den Knotenobjekten zurück

Alles in allem node_loadist dies eine Annehmlichkeit, die Sie immer verwenden sollten, wenn dies möglich ist, und in node_load_multipleFällen, in denen Sie viel mehr Knoten laden müssen.

entity_load sollte zum Laden von Entitäten verwendet werden, wenn Sie den Typ nicht kennen oder in einer Variablen speichern lassen. In diesem Fall können Sie dies tun

entity_load($type, ...);
googletorp
quelle
1
schließlich node_load()ist das, was wir gewohnt sind.
Sivaji
9

Verwenden Sie node_load (), wenn Sie einen einzelnen Knoten laden möchten, und node_load_multiple (), wenn Sie mehrere haben. Verwenden Sie entity_load () direkt, wenn Sie den Entitätstyp beispielsweise nicht im Voraus kennen entity_load($type, array($id)).

Beachten Sie, dass entity_load () einen inkonsistenten Namen hat und eigentlich entity_load_multiple () sein sollte, da dadurch mehrere Ergebnisse geladen werden können und ein Array von Ergebnissen zurückgegeben wird.

Berdir
quelle
4

node_load()ist die Funktion, die vor der Einführung der Entitäts-API in Drupal 7 existierte. Der Unterschied entity_load()besteht darin, dass sie Parameter akzeptiert, die für das Laden eines Knotenobjekts spezifisch sind, wie z $vid. Die Funktionsaufrufe node_load_multiple(); Dies ist aus Gründen der Kompatibilität hilfreich und erfordert weniger Parameter.

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

In Drupal 8 node_load(), node_load_multiple()und entity_load()sind veraltet. Diese werden entfernt, wenn Drupal 9 seine stabile Version haben wird.
Außerdem müssen in Drupal 8 Aufrufe dieser Funktionen geändert werden, da in Drupal 8:

kiamlaluno
quelle