2011-02-25 31 views
12

Tôi biết nó có thể lọc một bộ sưu tập của một SKU, như sau:Magento - bộ sưu tập sản phẩm lọc theo nhiều SKU của

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

Nhưng có một số cách để thêm một danh sách các SKU, như sau (mà không hoạt động):

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

Thực ra, hãy nghĩ rằng tôi sẽ chỉ sử dụng entity_id, vì điều đó dường như hoạt động, nhưng vẫn sẽ quan tâm đến điều này nếu mọi người không có câu trả lời. –

Trả lời

20

tôi đã không kiểm tra này, nhưng tôi tin rằng một cái gì đó như thế này nên làm việc:

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

Cố gắng như thế này và cách tôi liệt kê ở trên nhưng không có niềm vui. Không thể thấy tại sao nó không hoạt động. –

+1

Phiên bản Magento nào? Tôi vừa thử nghiệm điều này trên Enterprise 1.9.1.1 và nó đã hoạt động. $ _testproductCollection = Mage :: getResourceModel ('danh mục/product_collection') -> addAttributeToSelect ('*') -> addAttributeToFilter ('SKU', mảng ('trong' => mảng ('sku1', 'sku2', ' sku3 '))); $ _testproductCollection-> load(); – Josh

+0

Hoạt động trong ấn bản Cộng đồng 1.6 – mas

1

Bạn ne ed chia 'addAttributeToFilter' hoặc params thứ hai chia trong này functionly dụ:

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

Tôi thử nó trong Magento 1.7.0.2 và nó không hoạt động. "Không thể xác định tên trường." – jrosell

10

Đối với nhà thám hiểm trong tương lai.

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

Đã kiểm tra trong 1.7.0.2 và 1.8.1.0.

+1

hoạt động tốt trong phiên bản 1.9.3 sẽ không làm tổn thương thêm 'trim' vào' $ productIds = explode (',', trim ($ productSkuString)); ' – asherrard

Các vấn đề liên quan