我试图在PrestaShop的WebService中使用 limit 参数。
我的问题是它只有一半工作,显示的条目数量工作正常,但是#34;起点"不是。
例如:
http://example.com/api/combinations?display=[id,reference]&limit=[0,500]&sort=id_ASC&ws_key=WEBSERVICEKEY
和
http://example.com/api/combinations?display=[id,reference]&limit=[500,500]&sort=id_ASC&ws_key=WEBSERVICEKEY
返回完全相同的产品(前500个)。
我正在使用PS 1.6.1.17 我已使用最新版本(从1.6.1.18开始)更新了classes / webservice文件夹 代码(classes / webservice / WebserviceRequest.php) - 没有覆盖:
JAVA_OPTS: -Xmx3072m -XX:MaxPermSize=1024m -Djava.net.preferIPv4Stack=true
代码看起来很好,也许它与SQL相关?我想打印生成的查询来测试它,但我无法找到方法...
答案 0 :(得分:0)
我发现了问题
int cast没有在这里工作。
$ this-> urlFragments [' limit'] 值 [500,500] 。
爆炸后,$ limitArgs [0]等于 [500 ,但代码(int)($ limitArgs [0])总是给我 0 结果强>>而不是 500
我用一个丑陋的str_replace替换它,如下所示:
$sql_limit .= ' LIMIT '.str_replace("[", "", $limitArgs[0]).(isset($limitArgs[1]) ? ','.(int)($limitArgs[1]) : '')."\n";// LIMIT X|X, Y
不是最好的,但如果有人遇到这种情况,可能会有用。
编辑:我发布了伪造,限制的正确语法是 limit = X,Y 不限制= [X,Y]。