Quale dovrei usare e quando: node_load () o entity_load ()?


24

Il titolo dice tutto.

Comprendo che entity_load fornisce un mezzo efficiente ed efficiente per caricare più nodi riducendo al contempo le query del database, quindi presumo che in quell'istanza dovrei usare entity_load (). Ma quando voglio solo un nodo, quale dovrei usare? E node_load () sarà deprecato in d8 a favore dell'pi entity_load () più generico?

Immagino che la stessa domanda vada anche per il familiare user_load ().


3
Ugh ... avrei dovuto leggere prima il codice. Node_load è solo un wrapper con alcuni controlli dell'argomento per node_load_multiple, che è esso stesso un wrapper per entity_load. Quindi le prestazioni non saranno diverse per nessuno dei due, tranne che chiamando direttamente entity_load (), forse ti salverai alcune chiamate di funzione aggiuntive. Vedi api.drupal.org/api/drupal/modules--node--node.module/function/… e api.drupal.org/api/drupal/modules--node--node.module/function/… .
Torrance,

Risposte:


32

node_loadè solo un involucro di fantasia per entity_load.

Sono node_loadchiamate per node_load_multiplecui è un wrapper entity_load. Ciò significa che per quanto riguarda le prestazioni non c'è davvero molta differenza, quale funzione si utilizza, a meno che non si debbano caricare molti nodi.

node_load presenta molti vantaggi entity_load

  • È più semplice
  • Aumenta la leggibilità del codice
  • restituisce l'oggetto nodo invece di un array con gli oggetti nodo

Quindi, nel complesso, node_loadè una comodità che dovresti sempre usare ogni volta che è possibile, quindi ricorrere a node_load_multiplecasi in cui è necessario caricare molti più nodi.

entity_load dovrebbe essere usato per caricare entità quando non si conosce il tipo o se è memorizzato in una variabile, nel qual caso è possibile farlo

entity_load($type, ...);

1
dopo tutto node_load()è ciò a cui siamo abituati.
Sivaji,

9

Usa node_load () quando hai un singolo nodo da caricare e node_load_multiple () quando ne hai più. Utilizzare entity_load () direttamente quando non si conosce in anticipo il tipo di entità, ad esempio entity_load($type, array($id)).

Si noti che entity_load () ha un nome incoerente, in realtà dovrebbe essere entity_load_multiple (), poiché consente di caricare più risultati e restituisce una matrice di risultati.


4

node_load()è la funzione che esisteva prima dell'introduzione dell'API di entità in Drupal 7. La differenza entity_load()è che accetta parametri specifici per il caricamento di un oggetto nodo, ad esempio $vid. La funzione chiama node_load_multiple(); è utile per motivi di compatibilità e perché richiede meno parametri.

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

In Drupal 8 node_load(), node_load_multiple()e entity_load()sono deprecati. Questo viene rimosso quando Drupal 9 avrà il suo rilascio stabile).
Inoltre, in Drupal 8 le chiamate a tali funzioni devono essere modificate, poiché in Drupal 8:

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.