Site icon MageComp Blog

How to Apply OR Conditions to Collection in Magento 2

How to Apply OR Conditions to Collection in Magento 2

Hello Magento Friends,

In this tutorial, I will be describing How to Apply OR Conditions to Collection in Magento 2.

Collection in Magento 2 is used to retrieve objects of the same category like product collection, customer collection, categories, etc. AND and OR are the Magento 2 collection conditions that can be applied to retrieve product data from the collection in Magento. AND is the default Magento 2 collection conditions. 

In this tutorial, we will learn about Magento 2 addFieldToFilter and addAttributeToFilter OR conditions.

Steps to Apply OR Conditions to Collection in Magento 2:

Step 1:  Apply OR condition for Magento 2 addAttributeToFilter collection

protected  $_productCollection;

public function __construct(
   \Magento\Catalog\Model\ResourceModel\Product\Collection $productCollection)
{
     $this->_productCollection = $productCollection;
}
    
public function getProductCollection()
{
     $this->_productCollection->addAttributeToFilter(array(
     array(
          'attribute' => 'sku',
          'like' => '24MB%’),
          array(
               'attribute' => 'type_id',
               'eq' => 'simple')
          ));

     echo $this->_productCollection->getSelect();
}

Output:

SELECT `e`.* FROM `catalog_product_entity` AS `e` WHERE ((`e`.`sku` LIKE '24MB%') OR (`e`.`type_id` = 'simple'))

Step 2:  Apply OR condition for Magento 2 addFieldToFilter collection

protected  $_orderCollection;

public function __construct(
   \Magento\Sales\Model\ResourceModel\Order\Collection $orderCollection)
{
     $this->_orderCollection = $orderCollection;
}
    
public function getOrderCollection()
{
     $this->_orderCollection->addAttributeToFilter(array(
     array(
          'attribute' => 'sku',
          'like' => '24MB%’),
          array(
               'attribute' => 'type_id',
               'eq' => 'simple')
          ));

     echo $this->_orderCollection->getSelect();
}

Output:

SELECT `main_table`.* FROM `sales_order` AS `main_table` WHERE ((`customer_is_guest` = 1) OR (`status` = 'pending'))

Conclusion:

Accordingly, you can apply OR conditions for addAttributeToFilter and addFieldToFilter Magento 2. If you have any doubt about the addAttributeToFilter and addFieldToFilter Magento 2 collection conditions, freely contact me through the comment part. Share the article with your friends and keep yourself updated with the latest Magento solutions by us.  

Happy Coding!

Exit mobile version