【问题标题】:Magento 2.2 product collection factory not returning all productsMagento 2.2 产品收集工厂不退回所有产品
【发布时间】:2018-07-23 21:35:08
【问题描述】:

我正在尝试在这样的自定义模块中使用 collectionFactory 获取所有产品:

$products = $this->_productCollectionFactory->create();
            ->addAttributeToSelect('*');

其中_productCollectionFactory__construct()中被初始化为

的实例
\Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $productCollectionFactory,  

问题是,在没有应用任何过滤器的情况下,集合中的产品数量小于我在 Magento db 中拥有的产品数量。

从后端结果我有 30.697 个产品,但 count($products) 只产生 22.000 个产品。

我错过了什么?考虑哪些产品,哪些不考虑?

【问题讨论】:

    标签: magento collections magento2 product


    【解决方案1】:

    Magento 自己从集合中删除禁用产品。即使没有应用过滤器。所以你应该检查你的产品的状态。

    在我的情况下,catalog_product_flat 索引存在问题,它没有正确更新我的平面表。我设法通过运行bin/magento indexer:reindex catalog_product_flat 解决了这个问题。

    您可以使用以下行接收由您的集合触发的 SQL 查询:

    $products->getSelect()->assemble();
    

    如果您的问题有其他原因,这可能会对您有所帮助。

    【讨论】:

      【解决方案2】:

      我想说我们需要检查这些事情:

      1. 配置 -> 目录选项卡 -> 库存 -> 显示缺货配置:它可能会受到此问题的影响。
      2. 我们需要检查getProductCollection()函数之前/之后是否有任何插件/观察器。

      注意:如果您使用 PHPStorm,请尝试安装 Magento PHPStorm 插件。它将帮助您找出覆盖的类和插件(如果有)。

      As this example, you can check preferences or plugin of PHP file

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多