Magento 2 allows applying OR & AND conditions to collections in Magento 2. However, the default condition applied is AND to collections in Magento 2.
Example for AND Condition:
use Magento\Catalog\Model\ResourceModel\Product\CollectionFactory; protected $productCollectionFactory; public function __construct(CollectionFactory $productCollectionFactory) { $this->productCollectionFactory = $productCollectionFactory; } $collection = $this->productCollectionFactory->create(); $collection->addAttributeToSelect('*'); $collection->addAttributeToFilter([['attribute'=>'sku','like'=>'%ch%'],['attribute'=>'status', 'eq'=>'1']]);
The collection of only those products will be fetched whose (write according to the example)
SKU starts with mt and product type is simple
Method to apply OR conditions to the collection in Magento 2:
1. OR CONDITION for addAttributeToFilter filter:
use Magento\Catalog\Model\ResourceModel\Product\CollectionFactory; protected $productCollectionFactory; public function __construct(CollectionFactory $productCollectionFactory) { $this->productCollectionFactory = $productCollectionFactory; } $collection = $this->productCollectionFactory->create(); $collection->addAttributeToSelect('*'); $collection->addAttributeToFilter([['attribute'=>'sku','like'=> '%ch%'], ['attribute'=>'status','eq' => '1']]);
SKU content character ch or status is 1
2. OR CONDITION for addFieldToFilter filter:
use Magento\Catalog\Model\ResourceModel\Product\CollectionFactory; protected $productCollectionFactory; public function __construct(CollectionFactory $productCollectionFactory) { $this->productCollectionFactory = $productCollectionFactory; } $collection = $this->productCollectionFactory->create(); $collection->addAttributeToSelect('*'); $collection->addFieldToFilter(['attribute_set_id','type_id'],[['eq'=>4],['eq'=>'simple']] );
That’s it.
In this way, you can add OR conditions to the collection in Magento 2 using the addFieldToFilter() method.
Do share the post with Magento peeps via social media.
Thank you.