Je sais qu'il est possible de filtrer une collection par un SKU, comme ci-dessous: mais existe-t-il un moyen d'ajouter une liste de SKU, comme ce qui suit (qui ne fonctionne pas ): p>
3 Réponses :
Je n'ai pas testé cela, mais je crois que quelque chose comme ça devrait fonctionner:
->addAttributeToFilter( 'sku', array( 'in' => array( 'my-sku1', 'my-sku2', 'my-sku3' ) ) )
J'ai essayé comme ça et la façon dont j'ai énuméré ci-dessus mais pas de joie. Je ne vois pas pourquoi ça ne marche pas cependant.
Quelle version de magento? Je viens de tester cela sur l'entreprise 1.9.1.1 et cela a fonctionné. $ _testProductCollection = mage :: getresourcemodel ('Catalogue / produit_collection') -> AddattributetOselect ('*') -> AddattributeetOfilter ('Sku', tableau ('in' => Array ("SKU1", "SKU2" ))); $ _testProduitsCollection-> charge ();
Commentaire de Matt Humphrey confirmé. "Sku" minuscule a fait le tour pour moi.
Vous avez besoin de "addattribuettofilter" ou de seconde paramètres fractionnés dans cette fonctionnement.
Exemple:
Je l'essaie dans Magento 1.7.0.2 et ça ne marche pas. "Impossible de déterminer le nom de champ."
pour les futurs aventuriers.
$productSkuString = 'PROD001, PROD002, PROD003'; $productIds = explode(', ', $productSkuString); $products = Mage::getResourceModel('catalog/product_collection') ->addAttributeToSelect('*') // <- careful with this ->addAttributeToFilter( 'sku', array('in' => $productIds) ) ->load(); // usage foreach($products as $prod) { echo $prod->getName(); }
Fonctionne géniale en 1.9.3 ne ferait pas mal d'ajouter un code> à code> à $ productids = exploser (',', couper ($ ProduitsPlus)); code>
En fait, pensez que je vais simplement utiliser l'entité_id à la place, comme cela semble fonctionner, mais resterait toujours intéressé par cela si quelqu'un a une réponse.