我正在尝试更新Magento中许多产品的网站和类别ID,但我遇到了问题。这是我的代码:
$client = new SoapClient('http://magentohost/api/v2_soap/?wsdl');
$session = $client->login('apiUser', 'apiKey');
$productarray = array("12345" => "1,2,3", "67890" => "1,5,6");
foreach ($productarray as $product_id => $cats) {
$update = array(
'websites' => array(1,2,3),
'categories' => array($cats)
);
$updatewebsite = $client->catalogProductUpdate($session,$product_id,$update);
}
当我运行此代码时,它正在更改产品以获得新的网站ID,但它只更新了$ cats中的第一个类别ID。
例如,“12345”只有类别ID 1而不是2或3。
当我打印出每只产品的$ cats时,它会正确显示信息(如上例所示为“1,2,3”和“1,5,6”)。
我不确定我做了什么,但我似乎无法更新所有类别ID。我已经有数千种产品可以运行,所有产品都有不同的类别ID,所以我不能手动执行此操作!
编辑 - 已解决
我已经更改了我的代码,所以它现在就像这样(有效):
$client = new SoapClient('http://magentohost/api/v2_soap/?wsdl');
$session = $client->login('apiUser', 'apiKey');
$productarray = array("12345" => "1,2,3", "67890" => "1,5,6");
foreach ($productarray as $product_id => $cats) {
$cats = explode(",", $cats);
$update = array(
'websites' => array(1,2,3),
'categories' => $cats
);
$updatewebsite = $client->catalogProductUpdate($session,$product_id,$update);
}
答案 0 :(得分:1)
categories属性需要一个ID数组,而你传递一个字符串。尝试使用std::function
将其分解:
explode()