/** * Add JOINs to original select. * * @param \Magento\Framework\DB\Select $select * @return \Magento\Framework\DB\Select */ public function modifySelect(\Magento\Framework\DB\Select $select) { /* aliases for tables ... */ $tblEntity = 'e'; // this is alias for 'catalog_product_entity' table $tblStockItem = $this->_resource->getTableName(self::TBL_STOCK_ITEM); $tblWrhsQty = $this->_resource->getTableName(self::TBL_WRHS_QTY); /* ... and fields */ $fldStockItemProdId = StockItem::PRODUCT_ID; $fldStockItemId = StockItem::ITEM_ID; $fldEntityId = \Magento\Eav\Model\Entity::DEFAULT_ENTITY_ID_FIELD; $fldQty = self::FLD_QTY; $fldStockItemRef = Quantity::ATTR_STOCK_ITEM_REF; /* LEFT JOIN `cataloginventory_stock_item` */ $on = "`{$tblStockItem}`.`{$fldStockItemProdId}`=`{$tblEntity}`.`{$fldEntityId}`"; $fields = []; $select->joinLeft($tblStockItem, $on, $fields); /* LEFT JOIN `prxgt_wrhs_qty` */ $on = "`{$tblWrhsQty}`.`{$fldStockItemRef}`=`{$tblStockItem}`.`{$fldStockItemId}`"; $fields = [$fldQty => $this->getEquationQty()]; $select->joinLeft($tblWrhsQty, $on, $fields); /* GROUP BY */ $select->group("{$tblEntity}.{$fldEntityId}"); return $select; }