Technisch gesehen, ja, wenn Sie Ihre eigenen db_query()
Anweisungen schreiben , werden die Daten schneller und mit weniger Aufwand zurückgegeben. Es ist jedoch nicht wirklich der "Drupal-Weg", Dinge zu tun.
node_load()
stellt einen 'statischen' Cache bereit; Mit anderen Worten, wenn Sie denselben Knoten zweimal auf einer Seitenanforderung laden, wird er die Datenbank nur einmal treffen.
Was Sie wirklich verpassen, wenn Sie nicht verwenden, node_load()
sind alle API-Hooks und die Modulintegration von Drittanbietern. Wenn Sie ein CCK-Feld benötigen, werden node_load()
alle diese Daten für Sie abgerufen, wobei für eine manuelle Abfrage viele Verknüpfungen erforderlich wären.
Wie Sie bemerken, gibt es eine Menge zusätzlicher Verarbeitung / Laden, die Sie im gegebenen Moment möglicherweise nicht benötigen. Wenn Sie die Daten nicht benötigen, schadet es Ihnen technisch nicht, sie nicht zu haben. Es liegt wirklich an Ihnen, ob Sie diesen Weg gehen möchten.
Der Hauptgrund für die Verwendung von IMO, node_load()
obwohl Sie die zusätzlichen Daten möglicherweise nicht benötigen, ist nur zum Zweck der Standardisierung. Sie müssen sich keine Gedanken darüber machen, welche Daten Sie zu einem bestimmten Zeitpunkt haben. Sie haben einen vollständig geladenen Knoten und mehr Optionen zum Anpassen der Daten nach Bedarf durch hook_nodeapi()
. Andere Entwickler, die sich Ihren Code ansehen, können leichter verstehen, womit sie arbeiten. Außerdem müssen Sie 6 Monate später, wenn Sie ein neues Feature / Anzeigefeld hinzufügen, Ihre Abfragen nicht anpassen.
node_load ist definitiv ein Ressourcenfresser, aber ich habe es meiner Erfahrung nach besser gefunden. Drupal 7 verbessert die Situation erheblich, indem node_load_multiple () bereitgestellt wird, was, wie der Name schon sagt, die Anzahl der Abfragen beim Laden mehrerer Knoten verringert.
node_load()
sind die Kompatibilität mit zukünftigen Versionen von Drupal und die Integration mit anderen Modulen, wodurch das von der Funktion zurückgegebene Ergebnis geändert werden kann. Was den ersten Punkt betrifft, so ist dies bei Drupal 7 offensichtlich: Die Abfrage zum Abrufen eines vollständigen Knotenobjekts unterscheidet sich erheblich von der bei Drupal 6 verwendeten. Außerdem werden die an der Abfrage beteiligten Datenbanktabellen geändert.