protected $_productCollectionFactory;
protected $attributFactory;
protected $eavConfig;
public function __construct(
\Magento\Catalog\Model\ResourceModel\Product $productFactory,
\Magento\Eav\Model\ResourceModel\Entity\Attribute\Option\CollectionFactory $attributFactory,
\Magento\Eav\Model\Config $eavConfig
) {
$this->eavConfig = $eavConfig;
$this->attributFactory = $attributFactory;
$this->_productCollectionFactory = $productFactory;
}
public function getProductCountByAttributeCode()
{
$attributeCode = ‘you_attribute_code’;
$attribute = $this->eavConfig->getAttribute('catalog_product', $attributeCode);
$attributFactory = $this->attributFactory->create()->setStoreFilter(0, false);
$itemCollection = $this->_productCollectionFactory;
$attributFactory->getSelect()
->joinLeft(
array('value_table' => $itemCollection->getTable('catalog_product_entity_int')),
'main_table.option_id=value_table.value AND main_table.attribute_id=value_table.attribute_id', 'entity_id')
->reset(\Zend_Db_Select::COLUMNS)
->columns(array('main_table.option_id',new \Zend_Db_Expr('COUNT(value_table.entity_id)')))
->where('main_table.attribute_id=:attribute_id')
->group('main_table.option_id');
$result = $itemCollection->getConnection()->fetchPairs(
$attributFactory->getSelect(), array('attribute_id' => $attribute->getId()));
return $result;
}