19 private $storeManager;
34 private $catalogHelper;
39 private $metadataPool;
44 private $baseSelectProcessor;
65 $this->catalogHelper = $catalogHelper;
66 $this->metadataPool = $metadataPool;
67 $this->baseSelectProcessor = (
null !== $baseSelectProcessor)
76 $linkField = $this->metadataPool->getMetadata(ProductInterface::class)->getLinkField();
77 $priceAttribute = $this->eavConfig->getAttribute(
Product::ENTITY,
'price');
78 $productTable = $this->resource->getTableName(
'catalog_product_entity');
80 $priceSelect = $this->resource->getConnection()->select()
81 ->from([
'parent' => $productTable],
'')
83 [
'link' => $this->resource->getTableName(
'catalog_product_relation')],
84 "link.parent_id = parent.$linkField",
91 [
't' => $priceAttribute->getBackendTable()],
95 ->where(
't.attribute_id = ?', $priceAttribute->getAttributeId())
96 ->where(
't.value IS NOT NULL')
100 $priceSelect = $this->baseSelectProcessor->process($priceSelect);
102 if (!$this->catalogHelper->isPriceGlobal()) {
103 $priceSelectStore = clone $priceSelect;
104 $priceSelectStore->where(
't.store_id = ?', $this->storeManager->getStore()->getId());
105 $selects[] = $priceSelectStore;
108 $priceSelect->where(
't.store_id = ?', Store::DEFAULT_STORE_ID);
109 $selects[] = $priceSelect;
const PRODUCT_TABLE_ALIAS
__construct(\Magento\Store\Model\StoreManagerInterface $storeManager, \Magento\Framework\App\ResourceConnection $resourceConnection, \Magento\Eav\Model\Config $eavConfig, \Magento\Catalog\Helper\Data $catalogHelper, \Magento\Framework\EntityManager\MetadataPool $metadataPool, BaseSelectProcessorInterface $baseSelectProcessor=null)