2017-11-09 4 views
0

저는 업데이트를 업데이트해야하는 레코드 모음이 있습니다. magento에 "load"를 사용하면 속도가 느려지고, 재고가 업데이트되기 전에 사용하기 때문에 더 빠른 방법이 있는지 궁금해합니다. 당신은 제품 로딩 대신 주식 항목 로딩을 사용하려고 할 수 있습니다컬렉션 레코드를 더 빨리 업데이트합니다.

$productCollection = Mage::getResourceModel('catalog/product_collection') 
        ->addFieldToFilter(array(
        array('attribute'=>'reference','neq'=>''), 
    )); 
//Update Prices and Stock 
foreach ($productCollection as $product) { 
try { 
    $reference = $product->getReference(); 
    $res = $products_api->xpath("item/sku[.='{$reference}']/parent::*"); 

    if (count($res) <= 0){ 
     unset($product); 
     unset($res); 
     unset($reference); 
     continue; 
    } 

    $product->load($product->getId()); 
    //Search for Stock 
    $stock = $res[0]->stocks->quantity; 
    //Update Stock 
    $product->setStockData(array(
       'use_config_manage_stock' => 0, 
       'manage_stock'   => 1, 
       'is_in_stock'    => $stock > 0 ? 1 : 0, 
       'qty'      => $stock, 
      )); 

    $product->save(); 

답변

1

:

는 다음 코드 예제입니다. 아래의 코드를 사용 해보세요 :

$productCollection = Mage::getResourceModel('catalog/product_collection') 
        ->addFieldToFilter(array(
        array('attribute'=>'reference','neq'=>''), 
    )); 
//Update Prices and Stock 
foreach ($productCollection as $product) { 
try { 
    $reference = $product->getReference(); 
    $res = $products_api->xpath("item/sku[.='{$reference}']/parent::*"); 

    if (count($res) <= 0){ 
     unset($product); 
     unset($res); 
     unset($reference); 
     continue; 
    } 


    //Search for Stock 
    $stock = $res[0]->stocks->quantity; 
    //Update Stock 

    $stockItem = Mage::getModel('cataloginventory/stock_item')->loadByProduct($product); 
    if ($stockItem->getId()) { 
     $isInStock = $stock > 0 ? 1 : 0; 
     $stockItem->setQty($stock); 
     $stockItem->setIsInStock($isInStock); 
     $stockItem->setManageStock(1); 
     $stockItem->setUseConfigManageStock(0); 
     $stockItem->save(); 
    } 

Sonassi 블로그에서 촬영 - 대량 업데이트 재고 수준을 마 젠토에 - FAST

+0

덕분에 훨씬 더 빠릅니다 –

관련 문제