我正在尝试通过SOAP API(V2)读取Magento的产品列表,并尝试做一些/任何类型的分页 .
简单场景:
var filters = new filters();
var products = catalogProductList(out pe, Connection.Session, filters, null);
这使Magento崩溃: "Allowed memory size of 1073741824 bytes exhausted (tried to allocate 72 bytes."
我试图通过在 product_id
上指定两个复杂的过滤器来添加分页:
filters.complex_filter = new complexFilter[]
{
new complexFilter()
{
key = "product_id",
value = new associativeEntity()
{
key = "gt",
value = "400"
}
},
new complexFilter()
{
key = "product_id",
value = new associativeEntity()
{
key = "lt",
value = "1000"
}
}
};
但是,在这种情况下,只应用第二个过滤器,忽略第一个过滤器 .
我正在考虑阅读类别树,然后是分配的产品,但有很多产品没有分配到任何类别或多个类别,所以我会错过它们或多次获取它们 .
有没有办法使用某种类型的分页来阅读产品列表,所以我不会立即阅读完整列表? (注意:要求增加内存不是一个真正的选择)
4 回答
我已经为此提出了一个非常好的解决方案 . 希望这有助于某人 .
我在PHP中成功完成了以下操作:
虽然,据说
也许它需要是“$ filters-> complex_filter = array();”?第一个代码似乎对我有用 .
看起来你需要的答案在https://stackoverflow.com/a/22874035/2741137描述
显然,您可以在两个过滤条件之一中大写
PRODUCT_ID
来解决Magento的限制,该限制会阻止同一个键上的两个过滤条件 .丑陋,但对我有用: