sql >> Database teknologi >  >> RDS >> Mysql

Har brug for hjælp til at forstå Magento produktsamlingsobjekter og kataloget/produktmodellen

Du har flere måder at få adgang til data fra magento på:

  • ved at bruge load() => den indlæser ALLE data (attributter) i forhold til en model. Det er meget langsomt og præstationsdræbende. For et produkt bør du kun bruge en load() på produktsiden (fordi alle de data, du vil bruge på den side, er i forhold til et enkelt objekt .. så du kan indlæse det hele vejen)

  • bruger samling => når du skal hente en liste over objekter, skal du bruge (mindst) en samling. Det er op til dig at bestemme hvilken egenskabsliste du vil hente. Du kan tilføje attribut til select/filter, og samlingen vil klare at lave SQL joins til EAV-tabeller osv... i baggrunden

  • bruger brugerdefineret SQL => indsamling kan være langsom, når man håndterer komplekse objekter (en samling initialiserer mange SQL joins til tabel, som du måske ikke har brug for)... den sidste metode til at få adgang til data fra BDD er at oprette din egen SQL i din ResourceModel

I det script, du viser, er der en stor fejl:du indlæser en fuld model i en foreach iteration på en samling. Det må du aldrig gøre, hvis du skal indlæse() produktet, går jeg ud fra at det er fordi du ikke fandt en attribut i samlingen ? I så fald skal du kun ændre samlingen for at hente attributten...

For et produkt for eksempel tilbyder magento en måde at automatisk tilføje (eller fjerne) attributter til enhver produkt->samling, du instansierer. (se frontend/product/collection/attributes XML-tag i config.xml af Mage_Catalog)



  1. Hvordan opdaterer man to tabeller i én erklæring?

  2. Skift fra varchar til mediumtext forårsager ydeevneforringelse

  3. Hvordan installerer jeg kun klientværktøjerne til PostgreSQL på Windows?

  4. MySQL SubQuery - MySQL 3.23