Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- $collection = $this->productCollectionFactory->create();
- $collection->setVisibility($this->catalogProductVisibility->getVisibleInCatalogIds());
- $collection = $this->_addProductAttributesAndPrices($collection);
- return $collection;
- $collection = $this->productCollectionFactory->create();
- $collection->setVisibility($this->catalogProductVisibility->getVisibleInCatalogIds());
- $collection = $this->_addProductAttributesAndPrices($collection);
- $this->stockFilter->addInStockFilterToCollection($collection);
- protected $_linkFactory;
- public function __construct(
- MagentoCatalogModelProductLinkFactory $linkFactory
- ) {
- $this->_linkFactory = $linkFactory;
- }
- $collection = $this->_linkFactory->create()
- ->getProductCollection()->addAttributeToSelect('*')
- ->addAttributeToFilter(
- 'status', array('eq' => MagentoCatalogModelProductAttributeSourceStatus::STATUS_ENABLED)
- )
- ;
- $collection->joinField(
- 'qty', 'cataloginventory_stock_item', 'qty', 'product_id=entity_id', '{{table}}.stock_id=1', 'left'
- );
- /**
- * @var MagentoCatalogInventoryHelperStock
- */
- protected $_stockFilter;
- public function __construct(
- .....
- MagentoCatalogInventoryHelperStock $stockFilter
- .....
- ) {
- $this->_stockFilter = $stockFilter;
- }
- public function getProducts(){
- ..........
- $this->_stockFilter->addInStockFilterToCollection($collection);
- ..........
- }
- addInStockFilterToCollection($collection)
- addIsInStockFilterToCollection($collection)
- /**
- * @param MagentoCatalogModelResourceModelProductCollection $collection
- * @param bool $isFilterInStock
- * @return MagentoCatalogModelResourceModelProductCollection $collection
- */
- public function addStockDataToCollection($collection, $isFilterInStock)
- {
- $websiteId = $this->getStockConfiguration()->getDefaultScopeId();
- $joinCondition = $this->getConnection()->quoteInto(
- 'e.entity_id = stock_status_index.product_id' . ' AND stock_status_index.website_id = ?',
- $websiteId
- );
- $joinCondition .= $this->getConnection()->quoteInto(
- ' AND stock_status_index.stock_id = ?',
- Stock::DEFAULT_STOCK_ID
- );
- $method = $isFilterInStock ? 'join' : 'joinLeft';
- $collection->getSelect()->$method(
- ['stock_status_index' => $this->getMainTable()],
- $joinCondition,
- ['is_salable' => 'stock_status']
- );
- if ($isFilterInStock) {
- $collection->getSelect()->where(
- 'stock_status_index.stock_status = ?',
- StockStatus::STATUS_IN_STOCK
- );
- }
- return $collection;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement