当前位置: 首页 > 知识库问答 >
问题:

如何在Magento的低库存集合中只获得启用的产品

西门安歌
2023-03-14
/** @var $collection Mage_Reports_Model_Resource_Product_Lowstock_Collection  */
        $collection = Mage::getResourceModel('reports/product_lowstock_collection')
            ->addAttributeToSelect('*')
            ->setStoreId($storeId)
            ->filterByIsQtyProductTypes()
            ->joinInventoryItem('qty')
            ->joinInventoryItem('low_stock_date')
            ->useManageStockFilter($storeId)
            ->useNotifyStockQtyFilter($storeId)
            ->setOrder('qty', Varien_Data_Collection::SORT_ORDER_ASC);
->addAttributeToFiler('status', array('eq' => Mage_Catalog_Model_Product_Status::STATUS_ENABLED))

有人知道怎么做吗?

共有1个答案

左丘照
2023-03-14

您将需要加入保存每个产品状态值的catalog_product_entity_int表,为了方便起见,请确保status属性的attribute_id,在我的示例中是96。您可以从管理面板Manage AttributesEAV_Attribute表中检查它。

下面是要应用的内部联接:

$collection = Mage::getResourceModel('reports/product_lowstock_collection')
            ->addAttributeToSelect('*')
            ->setStoreId($storeId)
            ->filterByIsQtyProductTypes()
            ->joinInventoryItem('qty')
            ->joinInventoryItem('low_stock_date')
            ->useManageStockFilter($storeId)
            ->useNotifyStockQtyFilter($storeId)
            ->setOrder('qty', 'asc')
                 ->getSelect()
                 ->join(Mage::getConfig()->getTablePrefix().'catalog_product_entity_int', 'lowstock_inventory_item.product_id ='.Mage::getConfig()->getTablePrefix().'catalog_product_entity_int.entity_id',array('value'))
                 ->where(Mage::getConfig()->getTablePrefix().'catalog_product_entity_int.value=1 AND '.Mage::getConfig()->getTablePrefix().'catalog_product_entity_int.attribute_id=96');

这是生成的SQL查询:

SELECT `e`.*, `lowstock_inventory_item`.`qty`, `lowstock_inventory_item`.`low_stock_date`, `catalog_product_entity_int`.`value` FROM `catalog_product_entity` AS `e`
 INNER JOIN `cataloginventory_stock_item` AS `lowstock_inventory_item` ON e.entity_id = lowstock_inventory_item.product_id
 INNER JOIN `catalog_product_entity_int` ON lowstock_inventory_item.product_id =catalog_product_entity_int.entity_id WHERE (((`e`.`type_id` = 'simple') OR (`e`.`type_id` = 'virtual') OR (`e`.`type_id` = 'giftcard'))) AND (IF(lowstock_inventory_item.use_config_manage_stock = 1, 1, lowstock_inventory_item.manage_stock) = 1) AND (qty < IF(lowstock_inventory_item.use_config_notify_stock_qty = 1, 1, lowstock_inventory_item.notify_stock_qty)) AND (catalog_product_entity_int.value=1 AND catalog_product_entity_int.attribute_id=96)
 类似资料:
  • 我有一个名为product的MongoDB集合,其中包含以下文档,如下所示。 我想查询收款情况,只退回价格最低的单据,例如: 但当我运行聚合查询时: 它只返回一个文档。

  • 我需要找到产品的最低和最大价格,这样我就可以用它来设置我的价格过滤器的范围。我在catalog/model/layer/filter/price.php中使用了getMaxPriceInt()和getMinPriceInt()方法。但是返回的值基于'min_price'字段。 如何根据final_price找出集合中产品的最低和最高价格?也就是说,如果集合中有4个产品(我只登记需要的字段) get

  • 问题内容: 我正在为Magento(1.6)商店开发类别汇总报告。 为此,我想获得一部分产品的“订单项”集合-这些产品的唯一类别ID(这是我创建的Magento产品属性)与特定值匹配。 我可以通过基于目录/产品的集合来获得相关的结果集。 Magento不喜欢它,因为有相同商品ID的重复条目。 如何根据订单项构建代码以获取此结果集?加入按属性过滤的产品集合使我难以理解。这段代码并不能解决问题,因为它

  • 问题内容: 我知道KEYS命令,但这仅返回键(我猜所有的字符串类型都是String),并且显然不认为集合是键。 是否有用于获取数据库中所有集合的命令?其他数据类型(哈希,列表,排序集)又如何呢? http://redis.io/topics/data-types 问题答案: 我知道KEYS命令,但这仅返回键(我猜所有的字符串类型都是String),并且显然不认为集合是键。 不管您的密钥是哪种数据类

  • 我试图在AEM中获得集合中的所有资产,给定集合的路径。 假设集合的路径是/content/dam/collections/public/-/-XZMzZlhkJKIa7-Mg15h/testing 我需要把这个收藏里的所有资产。 我在content/dam/collections下进行了检查,资产未存储在此位置下 我甚至尝试在AEM的query builder中编写一个查询,给出类型:dam:as