Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Precisa de ajuda para entender os objetos da coleção de produtos Magento e o modelo de catálogo/produto


Você tem várias maneiras de acessar dados do magento:

  • usando load() => carrega TODOS os dados (atributos) relativos a um modelo. É muito lento e mata o desempenho. Para um produto, você deve usar um load() apenas na página do produto (porque todos os dados que você usará nessa página são relativos a um único objeto .. para que você possa carregá-lo por completo)

  • usando coleção => quando precisar recuperar uma lista de objetos, você deve usar (no mínimo) uma coleção. Cabe a você decidir a lista de atributos que deseja recuperar. Você pode adicionar atributo para selecionar/filtrar e a coleção conseguirá fazer as junções SQL às tabelas EAV etc... em segundo plano

  • usando SQL personalizado => coleção pode ser lenta ao lidar com objetos complexos (uma coleção inicializa muitas junções SQL na tabela que você pode não precisar) ... o último método para acessar dados do BDD é criar seu próprio SQL em seu ResourceModel

No script que você mostra, há um erro enorme:você carrega um modelo completo dentro de um foreach iterando em uma coleção. Você nunca deve fazer isso, se você tiver que carregar() o produto, suponho que seja porque você não encontrou um atributo na coleção ? Nesse caso, você só precisa modificar a coleção para recuperar o atributo...

Para um produto, por exemplo, o magento oferece uma maneira de adicionar (ou remover) automaticamente atributos a qualquer produto-> coleção que você instanciar. (veja a tag XML frontend/product/collection/attributes no config.xml do Mage_Catalog)