sql >> Base de Datos >  >> RDS >> Mysql

Necesita ayuda para comprender los objetos de colección de productos de Magento y el modelo de catálogo/producto

Tiene varias formas de acceder a los datos de magento:

  • usando load() => carga TODOS los datos (atributos) relativos a un modelo. Es muy lento y mata el rendimiento. Para un producto, debe usar una carga () solo en la página del producto (porque todos los datos que usará en esa página son relativos a un solo objeto... por lo que puede cargarlo completamente)

  • usando colección => cuando necesita recuperar una lista de objetos, debe usar (al menos) una colección. Depende de usted decidir la lista de atributos que desea recuperar. Puede agregar un atributo para seleccionar/filtrar y la colección se las arreglará para hacer las uniones SQL a las tablas EAV, etc. en segundo plano

  • usar SQL personalizado => la colección puede ser lenta cuando se trata de objetos complejos (una colección inicializa muchas uniones SQL a la tabla que quizás no necesite)... el último método para acceder a los datos de BDD es crear su propio SQL en su ResourceModel

En el script que muestra, hay un gran error:carga un modelo completo dentro de un foreach iterando en una colección. Nunca debe hacer eso, si tiene que cargar () el producto, supongo que es porque no encontró un atributo en la colección. En ese caso, solo tiene que modificar la colección para recuperar el atributo...

Para un producto, por ejemplo, Magento ofrece una forma de agregar (o eliminar) atributos automáticamente a cualquier producto-> colección que cree una instancia. (consulte la etiqueta XML frontend/product/collection/attributes en config.xml de Mage_Catalog)