Magento – Magento 2 Filter product collection by multiple attributes with OR

attributescollection;magento-2.1magento2

In Magento 2.3.3, How Can I Filter Product Collection by Multiple Attributes? First attribute SKU needs to check using "IN" second attribute is yes/no value. I need to filter collection by SKU array OR custom_attribute. I have tried few things but it did not return expected results.

$collection = $layer->getProductCollection()->addAttributeToFilter(
    array(
        array("attribute"=>"sku",array('in' => $skus)),
        array("attribute"=>"universal_fitment","eq"=>1)
    )
);

Best Answer

Please try below.

<?php
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$productCollection = $objectManager->create('Magento\Catalog\Model\ResourceModel\Product\Collection');
$productCollection->addAttributeToSelect('*');
$queryp = 'product'; 
$querys  = 'product';
$productCollection->addAttributeToFilter(
      [
       ['attribute' => 'sku', 'in' => array('Product 1','Product 2')],
       ['attribute' => 'custom_atribute', 'in' => array('5,4')]
      ]);

$collection = $productCollection->load();

foreach ($collection as $product){
     echo 'Name  =  '.$product->getName().'<br>';
}  

?>

and other case

<?php 

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$products = $objectManager->get('Magento\Catalog\Model\Product')
            ->getCollection()
            //->addAttributeToFilter('is_old',1)
            ->addAttributeToFilter('sku',array('Product 1','Product 2'))
            ->addAttributeToFilter('custom_atribute', array('in' => '5,4'));

echo "<pre>";
print_r($products->getData());

?>

Hope it works!

Related Topic