it-swarm-vi.com

Tôi nên sử dụng cái nào và khi nào: node_load () hoặc entity_load ()?

Tiêu đề nói lên tất cả.

Tôi hiểu rằng entity_load cung cấp một phương tiện hiệu quả và hiệu quả để tải nhiều nút trong khi giảm các truy vấn cơ sở dữ liệu, vì vậy tôi cho rằng trong trường hợp đó tôi nên sử dụng entity_load (). Nhưng khi tôi chỉ muốn một nút, tôi nên sử dụng nút nào? Và liệu node_load () sẽ không được dùng trong d8 để thay thế cho api entity_load () chung chung hơn?

Tôi đoán câu hỏi tương tự cũng xảy ra với user_load () quen thuộc.

25
Torrance

node_load chỉ là một trình bao bọc ưa thích cho entity_load.

Đó là node_load gọi node_load_multiple đó là một trình bao bọc cho entity_load. Điều này có nghĩa là hiệu năng khôn ngoan thực sự không có nhiều sự khác biệt, chức năng bạn sử dụng, trừ khi bạn phải tải rất nhiều nút.

node_load có nhiều lợi thế hơn entity_load

  • Nó đơn giản hơn
  • Nó làm tăng khả năng đọc mã
  • nó trả về đối tượng nút thay vì một mảng với (các) đối tượng nút

Vì vậy, trong tất cả, node_load là một tiện ích mà bạn luôn nên sử dụng bất cứ khi nào có thể, sau đó dùng đến node_load_multiple cho các trường hợp bạn cần tải thêm nhiều nút.

entity_load nên được sử dụng để tải các thực thể khi bạn không biết loại hoặc lưu trữ nó trong một biến, trong trường hợp đó bạn có thể làm

entity_load($type, ...);
33
googletorp

Sử dụng node_load () khi bạn có một nút duy nhất để tải và node_load_mult Môn () khi bạn có nhiều nút hơn. Sử dụng trực tiếp thực thể_load () khi bạn không biết trước loại thực thể, ví dụ entity_load($type, array($id)).

Lưu ý rằng entity_load () được đặt tên không nhất quán, nó thực sự phải là entity_load_mult Môn (), vì nó cho phép tải nhiều kết quả và trả về một mảng kết quả.

9
Berdir

node_load() là hàm tồn tại trước khi API thực thể được giới thiệu trong Drupal 7. Sự khác biệt với entity_load() là nó chấp nhận các tham số dành riêng cho việc tải một đối tượng nút, chẳng hạn như $vid. Hàm gọi node_load_multiple() ; rất hữu ích vì lý do tương thích, và vì nó yêu cầu ít tham số hơn.

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

Trong Drupal 8, node_load(), node_load_multiple()entity_load() không được dùng nữa. Chúng bị xóa khi Drupal 9 sẽ có bản phát hành ổn định).
[.__.] Hơn nữa, trong Drupal 8 cuộc gọi đến các chức năng đó cần phải được thay đổi, vì trong Drupal 8:

  • node_load() không sử dụng $vid Làm tham số thứ hai
  • entity_load()node_load_multiple() không sử dụng $condition Làm tham số thứ hai (và nó đã được đánh dấu là không dùng nữa trong Drupal 7)
5
kiamlaluno