Mana yang harus saya gunakan dan kapan: node_load () atau entity_load ()?

24

Judul mengatakan itu semua.

Saya mengerti bahwa entity_load menyediakan cara yang berkinerja dan efisien untuk memuat beberapa node sekaligus mengurangi permintaan basis data, jadi saya berasumsi bahwa saya harus menggunakan entity_load (). Tetapi ketika saya hanya ingin satu simpul, yang mana yang harus saya gunakan? Dan apakah node_load () tidak digunakan lagi dalam d8 untuk mendukung entitas_load () api yang lebih umum?

Saya kira pertanyaan yang sama juga berlaku untuk user_load ().

Torrance
sumber
3
Ugh ... seharusnya membaca kode sedikit dulu. Node_load hanyalah pembungkus dengan beberapa argumen yang memeriksa node_load_multiple, yang merupakan pembungkus untuk entitas_load. Jadi kinerjanya juga tidak akan berbeda, kecuali dengan memanggil entitas_load () secara langsung Anda mungkin menghemat beberapa panggilan fungsi tambahan. Lihat api.drupal.org/api/drupal/modules--node--node.module/function/… dan api.drupal.org/api/drupal/modules--node--node.module/function/… .
Torrance

Jawaban:

32

node_loadhanya pembungkus mewah untuk entity_load.

Itu adalah node_loadpanggilan node_load_multipleyang merupakan pembungkus untuk entity_load. Ini berarti bahwa kinerja bijaksana tidak ada banyak perbedaan, yang berfungsi Anda gunakan, kecuali jika Anda harus memuat banyak node.

node_load memiliki banyak kelebihan dibanding entity_load

  • Lebih sederhana
  • Ini meningkatkan pembacaan kode
  • itu mengembalikan objek node bukan array dengan objek node (s)

Jadi, pada dasarnya, node_loadadalah kenyamanan yang harus selalu Anda gunakan kapan pun memungkinkan, kemudian gunakan node_load_multipleuntuk kasus-kasus di mana Anda perlu memuat lebih banyak node.

entity_load harus digunakan untuk memuat entitas ketika Anda tidak tahu jenisnya, atau menyimpannya dalam variabel, dalam hal ini Anda dapat melakukannya

entity_load($type, ...);
googletorp
sumber
1
setelah semua node_load()adalah apa yang biasa kita lakukan.
Sivaji
9

Gunakan node_load () ketika Anda memiliki satu node untuk memuat dan node_load_multiple () ketika Anda memiliki lebih dari mereka. Gunakan entitas_load () secara langsung ketika Anda tidak tahu jenis entitas sebelumnya, misalnya entity_load($type, array($id)).

Perhatikan bahwa entity_load () dinamai secara tidak konsisten, itu seharusnya benar-benar entity_load_multiple (), karena memungkinkan untuk memuat beberapa hasil dan mengembalikan array hasil.

Berdir
sumber
4

node_load()adalah fungsi yang ada sebelum entitas API diperkenalkan di Drupal 7. Perbedaannya entity_load()adalah bahwa ia menerima parameter yang spesifik untuk memuat objek node, seperti $vid. Fungsi panggilan node_load_multiple(); itu membantu untuk alasan kompatibilitas, dan karena itu memerlukan lebih sedikit parameter.

$node = node_load($nid);
$nodes = entity_load('node', array($nid));

Dalam Drupal 8 node_load(),, node_load_multiple()dan entity_load()sudah usang. Ini mereka dihapus ketika Drupal 9 akan memiliki rilis stabil).
Selanjutnya, dalam Drupal 8 panggilan ke fungsi-fungsi tersebut perlu diubah, karena dalam Drupal 8:

kiamlaluno
sumber