123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- declare(strict_types=1);
- namespace Magento\InventoryCatalog\Model\ResourceModel;
- use Magento\Catalog\Model\ResourceModel\Product\Collection;
- use Magento\InventoryIndexer\Indexer\IndexStructure;
- use Magento\InventoryIndexer\Model\StockIndexTableNameResolverInterface;
- /**
- * Adapt adding and applying is in stock field to collection for Multi Stocks.
- */
- class AddIsInStockFieldToCollection
- {
- /**
- * @var StockIndexTableNameResolverInterface
- */
- private $stockIndexTableProvider;
- /**
- * @param StockIndexTableNameResolverInterface $stockIndexTableProvider
- */
- public function __construct(
- StockIndexTableNameResolverInterface $stockIndexTableProvider
- ) {
- $this->stockIndexTableProvider = $stockIndexTableProvider;
- }
- /**
- * @param Collection $collection
- * @param int $stockId
- * @return void
- */
- public function execute($collection, int $stockId)
- {
- $tableName = $this->stockIndexTableProvider->execute($stockId);
- $collection->getSelect()->join(
- ['inventory_in_stock' => $tableName],
- 'e.sku = inventory_in_stock.sku',
- []
- )->where('inventory_in_stock.' . IndexStructure::IS_SALABLE . ' = ?', 1);
- }
- }
|