通过sku过滤Productcollection

时间:2016-07-18 14:15:28

标签: collections filter magento2

我试图在Magento 2中使用合适的skus获得所有产品。

我做了什么:

$currentSku =  $_product->getSku();

$currentSku = substr($currentSku, 0, 3);

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
/** @var \Magento\Catalog\Model\ResourceModel\Product\Collection $productCollection */
$productCollection = $objectManager->create('Magento\Catalog\Model\ResourceModel\Product\Collection');
$productCollection->addFieldToFilter('sku', array('like' => ''.$currentSku.' %'));
/** Apply filters here */
$productCollection->load();

该系列总是空的,但有合适的产品。

我尝试按名称过滤集合,这很有效。

2 个答案:

答案 0 :(得分:0)

SKU后面有一个空格。 将其更改为

$productCollection->addFieldToFilter('sku', array('like' => ''.$currentSku.'%'));

答案 1 :(得分:0)

试试这个,

public function __construct(
        \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $productCollectionFactory,
        ....
    ) {
        $this->_productCollectionFactory = $productCollectionFactory;
        ...
    }

    public function getProducts($currentSku)
    {
        /** @var $collection \Magento\Catalog\Model\ResourceModel\Product\Collection */
        $collection = $this->_productCollectionFactory->create()
                    ->addAttributeToSelect('*')
                    ->addAttributeToFilter('status', array('eq' => 1))
                    ->addAttributeToFilter('sku', array('like' => $currentSku.'%'))
                    ->addStoreFilter()
                    ->load();
        return $collection;
    }