it-swarm.com.de

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

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 davon aus, dass ich in diesem Fall entity_load () verwenden sollte. Aber wenn ich nur einen Knoten 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 das vertraute user_load ().

25
Torrance

node_load Ist nur ein ausgefallener Wrapper für entity_load.

Das heißt, node_load Ruft node_load_multiple Auf, was ein Wrapper für entity_load Ist. Dies bedeutet, dass es in Bezug auf die Leistung keinen großen Unterschied gibt, welche Funktion Sie verwenden, es sei denn, Sie müssen viele Knoten laden.

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.

Insgesamt ist node_load Eine Annehmlichkeit, die Sie immer verwenden sollten, wenn dies möglich ist, und dann auf node_load_multiple Zurückgreifen sollten, wenn 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 gespeichert haben. In diesem Fall können Sie dies tun

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

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

Beachten Sie, dass entity_load () inkonsistent benannt ist. Es sollte eigentlich entity_load_multiple () sein, da es das Laden mehrerer Ergebnisse ermöglicht und ein Array von Ergebnissen zurückgibt.

9
Berdir

node_load() ist die Funktion, die vor der Einführung der Entitäts-API in Drupal 7. Der Unterschied zu entity_load() ist, dass es Parameter akzeptiert, die für das Laden eines Knotenobjekts spezifisch sind, wie z. B. $vid. Die Funktion ruft node_load_multiple() auf; es ist hilfreich aus Kompatibilitätsgründen und weil weniger Parameter erforderlich sind.

$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 wird seine stabile Version haben).
Außerdem müssen in Drupal 8 Aufrufe dieser Funktionen geändert werden, da in Drupal 8:

5
kiamlaluno