2011-02-25 8 views
12

So che è possibile filtrare una raccolta da uno SKU, come di seguito:Magento - filtro di raccolta del prodotto da più SKU

$_testproductCollection = Mage::getResourceModel('catalog/product_collection') 
->addAttributeToSelect('*') 
->addAttributeToFilter('SKU', array('like'=>array('my-sku'))); 
$_testproductCollection->load(); 

Ma c'è un modo per aggiungere un elenco di SKU, come il seguente (che non funziona):

->addAttributeToFilter('SKU', array('like'=>array('my-sku1, my-sku2, my-sku3'))) 
+0

In realtà, penso che userò semplicemente entity_id, poiché sembra funzionare, ma sarebbe comunque interessato a questo anche se qualcuno ha una risposta. –

risposta

20

non ho ancora testato questo, ma credo che qualcosa di simile dovrebbe funzionare:

->addAttributeToFilter('sku', array('in' => array('my-sku1', 'my-sku2', 'my-sku3'))) 
+0

Ho provato in questo modo e il modo in cui ho elencato sopra, ma nessuna gioia. Non riesco a capire perché non funziona però. –

+1

Quale versione di Magento? Ho appena provato questo su Enterprise 1.9.1.1 e ha funzionato. $ _testproductCollection = Mage :: getResourceModel ('catalog/product_collection') -> addAttributeToSelect ('*') -> addAttributeToFilter ('SKU', array ('in' => array ('sku1', 'sku2', ' sku3 '))); $ _testproductCollection-> load(); – Josh

+0

Funziona in edizione comunitaria 1.6 – mas

1

È Ne Ed diviso 'addAttributeToFilter' o secondi params intermedi in questo esempio functionly:

$collection->addAttributeToFilter(
array(
    array('attribute'=>'sku','like'=>"%$sku%"), 
    array('attribute'=>'sku','like'=>"%$sku%") 
)); 
+0

Lo provo in Magento 1.7.0.2 e non funziona. "Impossibile determinare il nome del campo." – jrosell

10

Per gli avventurieri future.

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

Testato in 1.7.0.2 e 1.8.1.0.

+1

funziona alla grande nella 1.9.3 non sarebbe male aggiungere un 'trim' a' $ productIds = explode (',', trim ($ productSkuString)); ' – asherrard

Problemi correlati