标题说明了一切。
我知道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_loadcall 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中已将其标记为不推荐使用)