Du har flera sätt att komma åt data från magento :
-
använder load() => den laddar ALLA data (attribut) i förhållande till en modell. Det är väldigt långsamt och prestationsdödande. För en produkt bör du endast använda en load() på produktsidan (eftersom all data du kommer att använda på den sidan är relaterad till ett enda objekt .. så att du kan ladda den hela vägen)
-
använder samling => när du behöver hämta en lista med objekt måste du använda (minst) en samling. Det är upp till dig att bestämma vilken attributlista du vill hämta. Du kan lägga till attribut för att välja/filtrera och samlingen kommer att klara av att göra SQL-kopplingar till EAV-tabeller etc... i bakgrunden
-
använda anpassad SQL => insamling kan vara långsam när man hanterar komplexa objekt (en samling initierar många SQL-kopplingar till tabeller som du kanske inte behöver)... den sista metoden för att komma åt data från BDD är att skapa din egen SQL i din resursmodell
I skriptet du visar finns det ett stort fel:du laddar en hel modell inuti en foreach iteration på en samling. Det får du aldrig göra, om du måste ladda() produkten antar jag att det beror på att du inte hittat ett attribut i samlingen ? I så fall behöver du bara ändra samlingen för att hämta attributet...
För en produkt till exempel, erbjuder magento ett sätt att automatiskt lägga till (eller ta bort) attribut till alla produkt->samlingar du instansierar. (se XML-taggen för frontend/product/collection/attributes i config.xml för Mage_Catalog)