我必须更新另一个程序员创建的代码。 它使用php-SOAP连接Magento。 我正在挖掘以了解他的所作所为,并使用复杂过滤器找到了一个查询 针对 sales_order_invoice.info 。 这是复杂过滤器:
$complexFilter = array(
'complex_filter' => array(
array(
'key' => 'CREATED_AT',
'value' => array(
'key' => 'from',
'value' => '2015-10-16 01:24:37'
)
),
array(
'key' => 'state',
'value' => array(
'key' => '=',
'value' => '2'
)
),
array(
'key' => 'store_id',
'value' => array(
'key' => 'in',
'value' => '5,6'
)
)
)
);
这是要连接的代码:
$cli = new SoapClient("http://MYstaging.com/api/v2_soap/?wsdl");
$username = 'myuser';
$password = 'myPass';
$session_id = $cli->login($username, $password);
#$cli->__setCookie('XDEBUG_SESSION', 'netbeans-xdebug');
$result = $cli->salesOrderInvoiceList($session_id, $complexFilter);
正如我们所看到的,查询应该从 salesOrderInvoiceList 中检索一些信息,并且确实如此。 这是结果:
array (size=1)
0 =>
object(stdClass)[2]
public 'increment_id' => string '500000001' (length=9)
public 'created_at' => string '2015-10-16 20:07:18' (length=19)
public 'order_currency_code' => string 'YYY' (length=3)
public 'order_id' => string '9' (length=1)
public 'state' => string '2' (length=1)
public 'grand_total' => string '00.0000' (length=7)
public 'invoice_id' => string '3' (length=1)
我不明白这一点。如果我们检查Magendo文档到sales_order_invoice.list,则没有 store_id 内容或领域。所以不应该将它用作过滤器。 但它确实存在于sales_order_invoice.info。
中好吧,如果我将“ store_id ”字段更改为根本不存在的内容, 让我们说“BLAH_BLAH”当然我没有任何结果。而这正是发生的事情。这是有道理的。在幕后可能我们有一个sql 1054(Unknow列)错误。
$complexFilter = array(
'complex_filter' => array(
array(
'key' => 'CREATED_AT',
'value' => array(
'key' => 'from',
'value' => '2015-10-16 01:24:37'
)
),
array(
'key' => 'state',
'value' => array(
'key' => '=',
'value' => '2'
)
),
array(
'key' => 'BLAH_BLAH',
'value' => array(
'key' => 'in',
'value' => '5,6'
)
)
)
);
有人可以解释为什么salesOrderInvoiceList接受store_id作为过滤器吗?