Objectif
Pour inaugurer la nouvelle catégorie trucs et astuces, penchons nous sur la manipulation des collections d’objets métier Magento stockés selon le modèle EAV (Entité – Attribut – Valeur).
Exemples
Les portions de code suivantes peuvent être indifféremment testées dans un contrôleur, bloc, helper ou même template de Magento.
Récupérer la collection de produits
// récupérer le modèle de données Product du module Mage/Catalog $model = Mage::getModel('catalog/product'); // récupérer la collection de produits $products = $model->getCollection();
Filtrer la collection sur le nom
$products = Mage::getModel('catalog/product') ->getCollection() // seulement les produits dont le nom est "mon beau produit" ->addAttributeToFilter('name', 'mon beau produit');
Ajouter l’attribut EAV prix
Par défaut et pour une raison d’économie de ressources inhérente au modèle EAV, lorsque l’on charge une collection d’objets Magento, les objets récupérés ne contiennent pas tous leurs attributs.
$products = Mage::getModel('catalog/product'); ->getCollection() // ajouter l'attribut prix aux produits retournés ->addAttributeToSelect(array('price'));
Filtrer sur l’attribut EAV prix
$products = Mage::getModel('catalog/product'); ->getCollection() // ajouter l'attribut prix ->addAttributeToSelect(array('price')) // filtrer la collection sur celui-ci ->addAttributeToFilter('price', '49.99');
Ajouter tous les attributs EAV
Enfin, si l’on a besoin de tous les attributs, on peux les récupérer comme indiqué ci-dessous, on imagine aisément que la requête générée par Magento est composée d’un grand nombre de jointures, à utiliser avec parcimonie !
$products = Mage::getModel('catalog/product') // ajouter tous les attributs ->addAttributeToSelect('*');
Conclusion
Une prochaine astuce présentera des manipulations plus complexes, les jointures !
Magento
Joomla!
Zend Fr.
Ubuntu



![Validate my RSS feed [Valid RSS]](/wp-content/themes/libre-a-vous/images/rss-valid.png)
Bonjour,
Merci pour ce tuto. c’est très clair.
Néanmoins, si je veux sélectionner les produits dont le prix est compris entre 15 et 20 €, comment paramétrer le addAttributeToFilter(’price’) ???
Bonjour,
et voilà :
$collection = Mage::getModel(’catalog/product’) -> getCollection();
$collection -> addAttributeToSelect(array(’price’))
-> addAttributeToFilter(’price’, array(’from’ => 15, ‘to’ => 20));