Masz kilka sposobów na dostęp do danych z Magento :
-
używając load() => ładuje WSZYSTKIE dane (atrybuty) względem modelu. Jest bardzo powolny i zabójczy w wydajności. W przypadku produktu powinieneś używać funkcji load() tylko na stronie produktu (ponieważ wszystkie dane, których użyjesz na tej stronie, odnoszą się do pojedynczego obiektu ... więc możesz załadować je w całości)
-
używając kolekcji => kiedy musisz pobrać listę obiektów, musisz użyć (przynajmniej) kolekcji. Od Ciebie zależy, jaką listę atrybutów chcesz pobrać. Możesz dodać atrybut do wyboru/filtrowania, a kolekcja będzie w stanie wykonać połączenia SQL z tabelami EAV itp. w tle
-
używanie niestandardowego SQL => zbieranie może być powolne w przypadku złożonych obiektów (kolekcja inicjuje wiele sprzężeń SQL do tabeli, których możesz nie potrzebować)... ostatnią metodą dostępu do danych z BDD jest utworzenie własnego SQL w Twoim ResourceModel
W skrypcie, który pokazujesz, występuje ogromny błąd:ładujesz pełny model wewnątrz foreach iterującego na kolekcji. Nigdy nie wolno tego robić, jeśli musisz wczytać () produkt, zakładam, że to dlatego, że nie znalazłeś atrybutu w kolekcji ? W takim przypadku wystarczy zmodyfikować kolekcję, aby pobrać atrybut...
Na przykład w przypadku produktu magento oferuje sposób automatycznego dodawania (lub usuwania) atrybutów do dowolnego produktu->kolekcji, którą tworzysz. (patrz znacznik XML frontend/product/collection/attributes w pliku config.xml Mage_Catalog)