在庫(qty)を倉庫の場所(stock_id)に割り当てるMagentoの製品インポートコードがあります。情報は配列で渡されますが、配列に関する私の実用的な知識はそれほどフラッシュではないので、これを正しく行っていないと確信しています。
インポートは現在このように行われていますが、製品を2回保存しているため、最も効率的ではないと確信しています。
これにより、ロケーション1(stock_id 1)に100の数量が割り当てられ、製品が保存され、次にロケーション2(stock_id 2)に200の数量が割り当てられ、製品が再度保存されます。
$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);
このすべての情報を1つの配列にまとめることができると思いますが、その方法がわかりません。