我有一个 Magento 的产品导入代码,它将库存(数量)分配给仓库位置(stock_id)。信息是在一个数组中传递的,但是我对数组的工作知识并不是那么快,所以我确定我没有正确地做到这一点。
导入目前是这样完成的,但我确信它不是最有效的,因为我保存了两次产品。
这会将 100 的数量分配给位置 1 (stock_id 1),保存产品,然后将 200 的数量分配给位置 2 (stock_id 2),然后再次保存产品。
$stocksData = $product->getStocksData();
if (!$stockData) {
$stockData = array();
}
$stockData['stock_id'] = 1;
$stockData['qty'] = 100;
$stocksData[$stockId] = $stockData;
$product->setStocksData($stocksData);
$product->setCreatedAt(strtotime('now'));
try {
$product->save();
echo "Successful";
}
catch (Exception $ex) {
echo 'There was an error :<br/>' .$ex;
}
$stocksData = $product->getStocksData();
if (!$stockData) {
$stockData = array();
}
$stockData['stock_id'] = 2;
$stockData['qty'] = 200;
$stocksData[$stockId] = $stockData;
$product->setStocksData($stocksData);
$product->setCreatedAt(strtotime('now'));
try {
$product->save();
echo "Successful";
}
catch (Exception $ex) {
echo 'There was an error :<br/>' .$ex;
}
我想要实现的是设置数组中的所有值并保存一次,因为这会减轻脚本的负担。
我一直在玩这样的东西,但是没有得到任何地方,通常最终会出现错误:
$stocksData = $product->getStocksData();
if (!$stockData) {
$stockData = array();
}
$stockData = array(
[$stockData['stock_id'] = 1] => $stockData['qty'] = 100,
[$stockData['stock_id'] = 2] => $stockData['qty'] = 200
);
$stocksData[$stockId] = $stockData;
$product->setStocksData($stocksData);
我假设可以将所有这些信息放在一个数组中,但我不确定如何。