sql >> Database >  >> RDS >> Mysql

Hulp nodig bij het begrijpen van Magento-productverzamelingsobjecten en het catalogus-/productmodel

Je hebt verschillende manieren om toegang te krijgen tot gegevens van magento:

  • met load() => laadt het ALLE gegevens (attributen) ten opzichte van een model. Het is erg traag en prestatie-killer. Voor een product moet u een load() alleen op de productpagina gebruiken (omdat alle gegevens die u op die pagina gebruikt relatief zijn aan een enkel object ... dus u kunt het volledig laden)

  • gebruikmakend van collection => wanneer u een lijst met objecten wilt ophalen, moet u (minstens) een verzameling gebruiken. Het is aan jou om te beslissen welke attributenlijst je wilt ophalen. U kunt attributen toevoegen om te selecteren/filteren en de collectie zal erin slagen om de SQL-joins te doen met EAV-tabellen enz... op de achtergrond

  • het gebruik van aangepaste SQL => verzameling kan traag zijn bij het omgaan met complexe objecten (een verzameling initialiseert veel SQL-joins naar een tabel die u misschien niet nodig hebt)... de laatste methode om toegang te krijgen tot gegevens van BDD is om uw eigen SQL te maken in uw ResourceModel

In het script dat u laat zien, is er een grote fout:u laadt een volledig model in een foreach die een verzameling herhaalt. Dat mag je nooit doen, als je het product moet laden() neem ik aan dat dit komt omdat je geen attribuut in de collectie hebt gevonden? In dat geval hoeft u alleen de collectie aan te passen om het attribuut op te halen...

Voor een product biedt magento bijvoorbeeld een manier om automatisch attributen toe te voegen (of te verwijderen) aan elke product->verzameling die u maakt. (zie frontend/product/collection/attributes XML-tag in de config.xml van Mage_Catalog)



  1. Reader-oplossingen voor de uitdaging van Special Islands

  2. Hoe verbinding maken met MS SQL Server met behulp van Inno Setup?

  3. MySQL-query IN()-clausule traag op geïndexeerde kolom

  4. Symfony2:Basistabel of weergave niet gevonden:1146