标题说明了一切。
我知道Entity_load提供了一种高效且高效的方式来加载多个节点,同时减少了数据库查询,因此我认为在这种情况下,我应该使用entity_load()。但是,当我只想要一个节点时,应该使用哪个节点?会否在d8中弃用node_load(),转而使用更通用的Entity_load()API?
我猜对于熟悉的user_load()也有同样的问题。
标题说明了一切。
我知道Entity_load提供了一种高效且高效的方式来加载多个节点,同时减少了数据库查询,因此我认为在这种情况下,我应该使用entity_load()。但是,当我只想要一个节点时,应该使用哪个节点?会否在d8中弃用node_load(),转而使用更通用的Entity_load()API?
我猜对于熟悉的user_load()也有同样的问题。
Answers:
node_load
只是一个花哨的包装entity_load
。
那就是node_load
call node_load_multiple
,它是的包装entity_load
。这意味着在性能方面,使用哪种功能实际上没有太大区别,除非必须加载大量节点。
node_load
相对于 entity_load
因此,总的来说,这node_load
是一种便利,您始终应尽可能使用它,然后node_load_multiple
在需要加载更多节点的情况下求助。
entity_load
当您不知道类型或将其存储在变量中时,应该用于加载实体,在这种情况下,您可以
entity_load($type, ...);
node_load()
我们已经习惯了。
node_load()
是在Drupal 7中引入实体API之前存在的功能。与之间的区别entity_load()
是,它接受特定于加载节点对象的参数,例如$vid
。函数调用node_load_multiple()
; 出于兼容性原因,它很有用,因为它需要较少的参数。
$node = node_load($nid);
$nodes = entity_load('node', array($nid));
在Drupal 8中node_load()
,node_load_multiple()
和entity_load()
已弃用。当Drupal 9稳定发布时,将删除它们。
此外,在Drupal 8中,需要更改对这些函数的调用,因为在Drupal 8中:
node_load()
不用$vid
作第二个参数entity_load()
并且node_load_multiple()
不要$condition
用作第二个参数(Drupal 7中已将其标记为不推荐使用)