
Here we are discussing how to get the collection of products assigned to any categories.
To get product collection you can use following code:
<?php
namespace Webkul\Test\Helper;
class Data extends \Magento\Framework\App\Helper\AbstractHelper
{
/**
* @var \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory
*/
protected $_productCollectionFactory;
public function __construct(
\Magento\Framework\App\Helper\Context $context,
\Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $productCollectionFactory
) {
parent::__construct($context);
$this->_productCollectionFactory = $productCollectionFactory;
}
public function getProductCollectionByCategories()
{
$categories = [2,3,5];//category ids array
$collection = $this->_productCollectionFactory->create();
$collection->addAttributeToSelect('*');
$collection->addCategoriesFilter(['in' => $categories]);
return $collection;
}
}
Here, $categories is an array, which include category ids.
$_productCollectionFactory is an object of product collection factory which is used to get collection of product model.
addCategoriesFilter function to apply category filter.
$collection returns a collection of products which are assigned in given categories.
Thank you.