it-swarm.it

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

Il titolo dice tutto.

Comprendo che entity_load fornisce un mezzo efficiente ed efficiente per caricare più nodi riducendo al contempo le query sul 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 ().

25
Torrance

node_load è solo un wrapper di fantasia per entity_load.

Questo è node_load chiama node_load_multiple che è un wrapper per 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 ha molti vantaggi rispetto a entity_load

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

Quindi, in tutto, node_load è una comodità che dovresti sempre usare quando possibile, quindi ricorrere a node_load_multiple per i casi in cui è necessario caricare molti più nodi.

entity_load dovrebbe essere usato per caricare entità quando non conosci il tipo o se lo hai memorizzato in una variabile, nel qual caso puoi farlo

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

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.

9
Berdir

node_load() è la funzione che esisteva prima dell'introduzione dell'API di entità in Drupal 7. La differenza con entity_load() è che accetta parametri specifici per il caricamento di un oggetto nodo, come $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 obsoleti. Vengono rimossi quando Drupal 9 avrà la sua versione stabile).
Inoltre, in Drupal 8 chiamate a tali funzioni devono essere modificate, poiché in Drupal 8:

5
kiamlaluno