Về mặt kỹ thuật, có, viết các db_query()
tuyên bố của riêng bạn sẽ trả về dữ liệu nhanh hơn và ít chi phí hơn. Tuy nhiên, nó không thực sự là "cách Drupal" để làm việc.
node_load()
cung cấp bộ đệm 'tĩnh'; nói cách khác, nếu bạn tải cùng một nút hai lần trong một yêu cầu trang, nó sẽ chỉ nhấn DB một lần.
Những gì bạn thực sự đang bỏ lỡ khi không sử dụng node_load()
là tất cả các móc API và tích hợp mô-đun của bên thứ ba. Nếu bạn cần một trường CCK, hãy node_load()
lấy tất cả dữ liệu đó cho bạn, trong đó một truy vấn thủ công sẽ yêu cầu rất nhiều phép nối.
Như bạn lưu ý, có rất nhiều xử lý / tải thêm đang diễn ra mà bạn có thể không cần tại thời điểm đã cho. Nếu bạn không cần dữ liệu, về mặt kỹ thuật sẽ không gây hại cho bạn nếu không có dữ liệu. Nó thực sự là tùy thuộc vào bạn nếu bạn muốn đi tuyến đường này.
Lý do lớn nhất IMO để sử dụng node_load()
mặc dù bạn có thể không cần thêm dữ liệu chỉ nhằm mục đích tiêu chuẩn hóa. Bạn sẽ không phải lo lắng về những phần dữ liệu bạn có tại một thời điểm nhất định. Bạn sẽ có một nút được tải đầy đủ và sẽ có nhiều tùy chọn hơn để điều chỉnh dữ liệu khi cần thiết thông qua hook_nodeapi()
. Các nhà phát triển khác nhìn vào mã của bạn sẽ có một thời gian dễ dàng hơn để hiểu những gì họ đang làm việc với. Ngoài ra, 6 tháng sau khi bạn thêm một tính năng / trường hiển thị mới, bạn sẽ không phải điều chỉnh các truy vấn của mình.
node_load chắc chắn là một tài nguyên hog, nhưng tôi đã thấy nó tốt hơn để sử dụng theo kinh nghiệm của tôi. Drupal 7 cải thiện đáng kể tình hình bằng cách cung cấp node_load_mult Môn (), như tên gọi của nó, làm giảm số lượng truy vấn khi tải nhiều nút.
node_load()
là khả năng tương thích với các phiên bản tương lai của Drupal và tích hợp với các mô-đun khác, có thể thay đổi kết quả trả về từ chức năng. Đối với điểm đầu tiên, điều đó thể hiện rõ với Drupal 7: Truy vấn để có được một đối tượng nút hoàn chỉnh khá khác biệt, so với truy vấn được sử dụng trên Drupal 6; nó cũng thay đổi các bảng cơ sở dữ liệu liên quan đến truy vấn.