【发布时间】:2012-02-11 10:22:39
【问题描述】:
我正在尝试获取整个 magento 产品集合,没有任何过滤器或限制,但我无法获取所有产品。
我已经尝试了各种方法,但它们都给我提供了非常有限的产品选择。假设商店包含 5000 种产品,但它只显示 500 种。当我查看目录时 -> 产品确实显示了整个列表。
Mage::getModel('catalog/product')->getCollection();
Mage::getResourceModel('catalog/product_collection')->addAttributeToSelect('*');
Mage::getModel("catalog/product")->getResourceCollection()->load();
他们都返回相同的金额 (500),而我希望它能给我 5000 件产品。我宁愿不使用 Zend 或 PHP,而是坚持使用 Magento 的方式来获取它们。
有谁知道如何真正获得所有产品,或者可以为我指出正确的方向,为什么这不起作用?
返回的选择字符串是:
SELECT 1 AS `status`, `e`.`entity_id`, `e`.`type_id`, `e`.`attribute_set_id` FROM `catalog_product_flat_4` AS `e`
【问题讨论】:
-
我认为“丢失”的产品来自不同的商店?默认情况下,目录集合按商店 ID 过滤。我不确定您是否可以覆盖它,因为可以在商店的基础上设置属性,这就是它决定为模型拉回哪些属性的方式。遍历您的商店并为每个商店获取产品可能是您获得所有产品的最佳机会。
-
实际上它们并不是全部...当我转到目录产品并按商店过滤时,我仍然有更多产品(例如 3000)。如果我另外过滤启用/禁用它会给我返回的 500 个产品中的 10 个产品。所以我仍然“错过”了 10 种产品,即使这些过滤器是默认设置的。
-
使用
echo (string) Mage::getModel('catalog/product')->getCollection()->getSelect();检索数据库查询并将其添加到您的问题中,这可能会有所帮助。 -
我已根据您的要求将选择字符串添加到问题中。
-
这是在哪个商店上下文中运行的?
标签: magento collections product