Le titre dit tout.
Je comprends que entity_load fournit un moyen performant et efficace pour charger plusieurs nœuds tout en réduisant les requêtes de base de données, donc je suppose que dans ce cas, je devrais utiliser entity_load (). Mais quand je veux juste un nœud, lequel dois-je utiliser? Et node_load () sera-t-il déconseillé en d8 au profit de l'api entity_load () plus générique?
Je suppose que la même question vaut aussi pour le familier user_load ().
node_load
est juste un emballage sophistiqué pour entity_load
.
C'est node_load
appels node_load_multiple
qui est un wrapper pour entity_load
. Cela signifie qu'en termes de performances, il n'y a pas vraiment de différence, quelle fonction vous utilisez, sauf si vous devez charger un grand nombre de nœuds.
node_load
présente de nombreux avantages par rapport à entity_load
Donc en tout, node_load
est une commodité que vous devez toujours utiliser dans la mesure du possible, puis utilisez node_load_multiple
pour les cas où vous devez charger beaucoup plus de nœuds.
entity_load
doit être utilisé pour charger des entités lorsque vous ne connaissez pas le type, ou le faire stocker dans une variable, auquel cas vous pouvez le faire
entity_load($type, ...);
Utilisez node_load () lorsque vous avez un seul nœud à charger et node_load_multiple () lorsque vous en avez plusieurs. Utilisez entity_load () directement lorsque vous ne connaissez pas à l'avance le type d'entité, par exemple entity_load($type, array($id))
.
Notez que entity_load () est nommé de manière incohérente, il devrait en fait être entity_load_multiple (), car il permet de charger plusieurs résultats et renvoie un tableau de résultats.
node_load()
est la fonction qui existait avant l'introduction de l'API d'entité dans Drupal 7. La différence avec entity_load()
est qu'il accepte des paramètres spécifiques au chargement d'un objet nœud, tels que $vid
. La fonction appelle node_load_multiple()
; elle est utile pour des raisons de compatibilité et parce qu'il nécessite moins de paramètres.
$node = node_load($nid);
$nodes = entity_load('node', array($nid));
Dans Drupal 8, node_load()
, node_load_multiple()
et entity_load()
sont déconseillés. Ils sont supprimés lorsque Drupal 9 aura sa version stable).
De plus, dans Drupal 8 appels à ces fonctions doivent être modifiés, car dans Drupal 8:
node_load()
n'utilise pas $vid
comme deuxième paramètreentity_load()
et node_load_multiple()
n'utilisez pas $condition
comme deuxième paramètre (et il était déjà marqué comme obsolète dans Drupal 7)