Что я должен использовать и когда: node_load () или entity_load ()?

Название говорит все.

Я понимаю, что entity_load предоставляет эффективные и эффективные средства для загрузки нескольких узлов при уменьшении запросов к базе данных, поэтому я предполагаю, что в этом случае я должен использовать entity_load (). Но когда мне просто нужен один узел, который я должен использовать? И будет ли node_load () устаревать в d8 в пользу более общего объекта entity_load () api?

Я предполагаю, что тот же вопрос касается и знакомого user_load ().

24 голоса | спросил Torrance 24 J0000006Europe/Moscow 2011, 05:25:02

3 ответа


32

node_load - просто причудливая оболочка для entity_load.

Это node_load вызывает node_load_multiple, который является оболочкой для entity_load. Это означает, что производительность мудрая на самом деле не очень важна, какую функцию вы используете, если вам не нужно загружать множество узлов.

node_load имеет много преимуществ перед entity_load

  • Это проще
  • Это повышает читаемость кода.
  • он возвращает объект узла вместо массива с узлом (-ами) объекта

Итак, node_load - это удобство, которое вы всегда должны использовать, когда это возможно, а затем прибегать к node_load_multiple для случаев, когда вам нужно загрузить еще много узлов.

entity_load должен использоваться для загрузки объектов, когда вы не знаете тип или не храните его в переменной, и в этом случае вы можете сделать

entity_load($type, ...);
ответил googletorp 24 J0000006Europe/Moscow 2011, 10:19:29
9

Используйте node_load (), когда у вас есть один узел для загрузки и node_load_multiple (), когда у вас их больше. Используйте entity_load () непосредственно, когда вы заранее не знаете тип сущности, например entity_load($type, array($id))

.

Обратите внимание, что имя_узла () несовместимо названо, оно должно фактически быть entity_load_multiple (), поскольку оно позволяет загружать несколько результатов и возвращает массив результатов.

ответил Berdir 24 J0000006Europe/Moscow 2011, 10:16:38
3

node_load () - это функция, существовавшая до того, как API-интерфейс объекта был введен в Drupal 7. Разница с entity_load () заключается в том, что он принимает параметры, специфичные для загрузки объекта узла, такие как $vid. Функция вызывает node_load_multiple () ; это полезно для соображений совместимости и потому, что для этого требуется меньше параметров.

$node = node_load($nid);
$nodes = entity_load('node', array($nid));
ответил kiamlaluno 24 J0000006Europe/Moscow 2011, 06:09:29

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132