2011-02-25 8 views
12

によるフィルタ生成物収集、私はそれは以下のように、1 SKUでコレクションをフィルタリングすることが可能です知っている:以下のように、Magentoの - 複数のSKUの

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

しかし、SKUのリストを追加するためのいくつかの方法があります(これは)は動作しません:

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

実際には、代わりにentity_idを使用すると思いますが、それはうまくいくようですが、誰かが答えを持っていれば、これにも興味があります。 –

答えて

20

を私はこれをテストしていませんが、私はこのような何かが動作するはずと信じて:

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

このようにして、上記の方法で試したが、喜びはなかった。なぜそれが動作しないのか分からない。 –

+1

Magentoのバージョンは?私はエンタープライズ1.9.1.1でこれをテストしたところ、うまくいきました。 addAttributeToSelect( '*') - > addAttributeToFilter( 'SKU'、array( 'in' =>配列( 'sku1'、 'sku2'、 'sku1')は、 sku3 ')))); $ _testproductCollection-> load(); – Josh

+0

Community Edition 1.6で動作します。 – mas

1

あなたがNE将来の冒険者のために

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

私はmagento 1.7.0.2で試してみるとうまくいきません。 "フィールド名を特定できません。" – jrosell

10

:edがこのfunctionly 例の 'addAttributeToFilter' またはスプリット第二のparamsを分割します。

$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.7.0.2および1.8.1.0でテスト済みです。

+1

は1.9.3でうまく動作しますが、 '$ productIds = explode( '、'、trim($ productSkuString));'に 'trim' – asherrard

関連する問題