/** * Retrieve product ID by sku * * @param string $sku * @return int|null */ protected function getProductIdBySku($sku) { if (empty($this->productIds)) { $this->productCollection->addAttributeToSelect('sku'); foreach ($this->productCollection as $product) { $this->productIds[$product->getSku()] = $product->getId(); } } if (isset($this->productIds[$sku])) { return $this->productIds[$sku]; } return null; }
/** * @return array|\Magento\Framework\Data\Collection\AbstractDb */ public function getItems() { $order = $this->getOrder(); if (!$order) { return []; } $items = $order->getAllVisibleItems(); $productIds = []; //get the product ids for the collection foreach ($items as $item) { $productIds[] = $item->getProductId(); } $items = $this->productCollection->addAttributeToSelect('*')->addFieldToFilter('entity_id', ['in' => $productIds]); return $items; }
/** * @param \Magento\Catalog\Model\ResourceModel\Eav\Attribute $attribute * @param \Magento\Catalog\Model\ResourceModel\Product\Collection $collection * @return $this */ protected function addGlobalAttribute(\Magento\Catalog\Model\ResourceModel\Eav\Attribute $attribute, \Magento\Catalog\Model\ResourceModel\Product\Collection $collection) { $storeId = $this->storeManager->getStore()->getId(); switch ($attribute->getBackendType()) { case 'decimal': case 'datetime': case 'int': $alias = 'at_' . $attribute->getAttributeCode(); $collection->addAttributeToSelect($attribute->getAttributeCode(), 'inner'); break; default: $alias = 'at_' . md5($this->getId()) . $attribute->getAttributeCode(); $collection->getSelect()->join([$alias => $collection->getTable('catalog_product_index_eav')], "({$alias}.entity_id = e.entity_id) AND ({$alias}.store_id = {$storeId})" . " AND ({$alias}.attribute_id = {$attribute->getId()})", []); } $this->joinedAttributes[$attribute->getAttributeCode()] = $alias . '.value'; return $this; }
/** * Collect validated attributes * * @param \Magento\Catalog\Model\ResourceModel\Product\Collection $productCollection * @return $this */ public function collectValidatedAttributes($productCollection) { $attribute = $this->getAttribute(); if ('category_ids' != $attribute) { $productCollection->addAttributeToSelect($attribute, 'left'); if ($this->getAttributeObject()->isScopeGlobal()) { $attributes = $this->getRule()->getCollectedAttributes(); $attributes[$attribute] = true; $this->getRule()->setCollectedAttributes($attributes); } else { $this->_entityAttributeValues = $productCollection->getAllAttributeValues($attribute); } } return $this; }
/** * Filter product collection * * @param \Magento\Catalog\Model\ResourceModel\Product\Collection $collection * @param \Magento\Catalog\Model\Category $category * @return void * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function filter($collection, \Magento\Catalog\Model\Category $category) { $collection->addAttributeToSelect($this->catalogConfig->getProductAttributes())->setStore($this->storeManager->getStore())->addMinimalPrice()->addFinalPrice()->addTaxPercents()->addStoreFilter()->addUrlRewrite()->setVisibility($this->productVisibility->getVisibleInSearchIds())->setOrder('relevance', Select::SQL_DESC); }
/** * Filter product collection * * @param \Magento\Catalog\Model\ResourceModel\Product\Collection $collection * @param \Magento\Catalog\Model\Category $category * @return void */ public function filter($collection, \Magento\Catalog\Model\Category $category) { $collection->addAttributeToSelect($this->catalogConfig->getProductAttributes())->addMinimalPrice()->addFinalPrice()->addTaxPercents()->addUrlRewrite($category->getId())->setVisibility($this->productVisibility->getVisibleInCatalogIds()); }