Tytuł mówi wszystko.
Rozumiem, że entity_load zapewnia wydajne i wydajne środki do ładowania wielu węzłów przy jednoczesnym zmniejszeniu liczby zapytań do bazy danych, więc zakładam, że w takim przypadku powinienem użyć encji_load (). Ale kiedy chcę tylko jednego węzła, którego powinienem użyć? I czy node_load () będzie przestarzałe w d8 na korzyść bardziej ogólnego interfejsu API entity_load ()?
Wydaje mi się, że to samo pytanie dotyczy również znanego user_load ().
Odpowiedzi:
node_load
to tylko fantazyjne opakowanieentity_load
.To znaczy
node_load
połączenia,node_load_multiple
które są opakowaniementity_load
. Oznacza to, że pod względem wydajności nie ma tak naprawdę dużej różnicy, z której funkcji korzystasz, chyba że musisz załadować wiele węzłów.node_load
ma wiele zaletentity_load
Podsumowując,
node_load
jest to wygoda, z której zawsze powinieneś korzystać, gdy tylko jest to możliwe, a następnie uciekać sięnode_load_multiple
do przypadków, w których musisz załadować więcej węzłów.entity_load
należy stosować do ładowania encji, gdy nie znasz typu lub przechowujesz go w zmiennej, w którym to przypadku możesz to zrobićźródło
node_load()
to do czego jesteśmy przyzwyczajeni.Użyj node_load (), gdy masz jeden węzeł do załadowania, i node_load_multiple (), gdy masz ich więcej. Skorzystaj bezpośrednio z entity_load (), jeśli na przykład nie znasz typu encji
entity_load($type, array($id))
.Zauważ, że entity_load () ma niekonsekwentną nazwę, tak naprawdę powinna to być entity_load_multiple (), ponieważ pozwala załadować wiele wyników i zwraca tablicę wyników.
źródło
node_load()
jest funkcją, która istniała przed wprowadzeniem API encji w Drupal 7. Różnicaentity_load()
polega na tym, że akceptuje ona parametry specyficzne dla ładowania obiektu węzła, takie jak$vid
. Wywołania funkcjinode_load_multiple()
; jest to pomocne ze względu na kompatybilność i ponieważ wymaga mniej parametrów.W Drupal 8
node_load()
,node_load_multiple()
ientity_load()
są przestarzałe. Są one usuwane, gdy Drupal 9 będzie miał stabilną wersję).Ponadto w Drupal 8 należy zmienić wywołania tych funkcji, ponieważ w Drupal 8:
node_load()
nie używa$vid
jako drugiego parametruentity_load()
inode_load_multiple()
nie używaj$condition
jako drugiego parametru (i został oznaczony jako przestarzały już w Drupal 7)źródło