12
votes

Magento - Collection de produits filtrant par plusieurs SKU

Je sais qu'il est possible de filtrer une collection par un SKU, comme ci-dessous: xxx

mais existe-t-il un moyen d'ajouter une liste de SKU, comme ce qui suit (qui ne fonctionne pas ): xxx


1 commentaires

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.


3 Réponses :


22
votes

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' ) ) )


3 commentaires

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.



1
votes

Vous avez besoin de "addattribuettofilter" ou de seconde paramètres fractionnés dans cette fonctionnement. Exemple: xxx


1 commentaires

Je l'essaie dans Magento 1.7.0.2 et ça ne marche pas. "Impossible de déterminer le nom de champ."



11
votes

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();
}


1 commentaires

Fonctionne géniale en 1.9.3 ne ferait pas mal d'ajouter un à à $ productids = exploser (',', couper ($ ProduitsPlus));