Magento 2 - Фильтр по нескольким категориям в коллекции товаров


У меня есть коллекция продуктов $collection, которая создана Magento\Catalog\Model\ResourceModel\Product\Collection

Код:

$collection = $objectManager->create('Magento\Catalog\Model\ResourceModel\Product\Collection');
$collection->addAttributeToSelect('*');
$collection->addAttributeToFilter('status', array('eq' => \Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_ENABLED));

Как я могу добавить в него фильтр нескольких категорий?

Author: Shan Atif, 2019-05-08

1 answers

Прежде всего, не используйте диспетчер объектов, создайте свой объект из constructor

$protected $collection;

public function __construct(
    ...
    \Magento\Catalog\Model\ResourceModel\Product\Collection $collection
    ...
)
{
    ...
    $this->collection = $collection;
    ...
}

Для вашего фильтра категорий используйте следующее:

$categories = [12,13,14]; //Category ids in array
$collection->addCategoriesFilter(array('in' => $categories));

Коллекция присоединится к таблице категорий и добавит ваш фильтр

 0
Author: Shoaib Munir, 2020-01-01 04:52:32