Magento - фильтровать коллекцию товаров по нескольким SKU - PullRequest
12 голосов
/ 25 февраля 2011

Я знаю, что можно отфильтровать коллекцию по одному 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')))

Ответы [ 3 ]

22 голосов
/ 26 февраля 2011

Я не проверял это, но я думаю, что-то вроде этого должно работать:

->addAttributeToFilter( 'sku', array( 'in' => array( 'my-sku1', 'my-sku2', 'my-sku3' ) ) )
11 голосов
/ 11 марта 2014

Для будущих искателей приключений.

$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 голос
/ 27 февраля 2011

Вам необходимо разделить «addAttributeToFilter» или разделить доли секунды в этой функции Пример:

$collection->addAttributeToFilter(
array(
    array('attribute'=>'sku','like'=>"%$sku%"),
    array('attribute'=>'sku','like'=>"%$sku%")
));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...