마젠 토로 제품 재고 수량 얻기


12

나는 품목을위한 제품 재고 수량을 얻어야한다, 그것을 얻는 방법

$products = Mage::getModel('catalog/product')->getCollection();
$products->addAttributeToSelect(array('name', 'thumbnail', 'weight' ,'price','description'));

foreach ($products as $product) {
    $p['products'][] = array(
        'id'        => $product->getId(),
        'sku'       => $product->getSku(),
        'name'      => $product->getName(),
        'description'   => $product->getDescription(),
        'weight'      => $product->getWeight(),
        'created at'    => $product->getCreatedAt(),
        'pirce'     => Mage::helper('core')->currency($product->getPrice(), true, false), //." ".$currencyCode,
    );
}

답변:


10

수량을 얻으려면 테이블을 조인해야합니다.

아래 코드를 참조하십시오 :

$products = Mage::getModel('catalog/product')
    ->getCollection()
    //->addAttributeToSelect('*')
    ->addAttributeToSelect(array('name', 'thumbnail', 'weight' ,'price','description'))
    ->joinField(
        'qty',
        'cataloginventory/stock_item',
        'qty',
        'product_id=entity_id',
        '{{table}}.stock_id=1',
        'left'
    );

foreach ($products as $product) {
    $p['products'][] = array(
        'id'            => $product->getId(),
        'sku'           => $product->getSku(),
        'name'          => $product->getName(),
        'description'   => $product->getDescription(),
        'weight'        => $product->getWeight(),
        'created at'    => $product->getCreatedAt(),
        'pirce'         => Mage::helper('core')->currency($product->getPrice(), true, false), //." ".$currencyCode,
        //get qty
        'qty'           => $product->getQty(),
    );
}

여기에 속성 값을 생성하는 방법 예를 들어 size라는 속성을 생성하여 해당 값을 가져 오는 방법

업데이트 (다른 ​​qst에 문의해야하지만 여기에 답변 해 드리겠습니다.)

맞춤 속성을 얻으려면 ->addAttributeToSelect섹션 에 속성을 추가해야합니다 .

여전히 작동하지 않습니까?

때로는 제품 모델을로드해야 할 수도 있습니다. 때로는 성능을 고려하여 컬렉션에서 컬렉션을 가져올 때 모든 사용자 정의 속성이 첨부되는 것은 아닙니다. 다음과 같은 것 :

$_product = Mage::getModel('catalog/product')->load($product->getId());
$size = $_product->getSize();  

여기에 속성 값을 생성하는 방법 예를 들어 size라는 속성을 생성했습니다. 그 값을 가져 오는 방법
vellai durai

시도 $product->getSize()또는$product->getData('size')
Adarsh ​​Khatri

그것의 반환 널 (null) 값 만
vellai durai

에 맞춤 속성을 추가 했습니까 ->addAttributeToSelect? 무엇을 선택해야하는지 알려야합니다. 그렇지 않으면 ->addAttributeToSelect(*)대신 사용하십시오. 제품과 관련된 모든 것이 선택됩니다. 이것이 작동하지 않으면 곧 업데이트 된 답변을 확인하십시오.
Adarsh ​​Khatri

네, 추가했습니다
vellai durai

19

나를 위해 일하고 있습니다.

$products = Mage::getModel('catalog/product')->getCollection();
foreach ($products as $_product) {
    $stock = Mage::getModel('cataloginventory/stock_item')->loadByProduct($_product);
    echo $stock->getQty();
    echo $stock->getMinQty();
    echo $stock->getMinSaleQty();
}

6

제품 컬렉션에 재고 정보를 추가하려면 한 줄로 수행 할 수 있습니다.

/* Mage_Catalog_Model_Resource_Product_Collection */
$products->setFlag('require_stock_items', true);

이 플래그는 catalog_product_collection_load_after옵저버 에서 사용됩니다 :

/**
 * Add information about producs stock status to collection
 * Used in for product collection after load
 *
 * @param   Varien_Event_Observer $observer
 * @return  Mage_CatalogInventory_Model_Observer
 */
public function addStockStatusToCollection($observer)
{
    $productCollection = $observer->getEvent()->getCollection();
    if ($productCollection->hasFlag('require_stock_items')) {
        Mage::getModel('cataloginventory/stock')->addItemsToProducts($productCollection);
    } else {
        Mage::getModel('cataloginventory/stock_status')->addStockStatusToProducts($productCollection);
    }
    return $this;
}

이 플래그가 설정되지 않은 경우 $product->getStockItem()->getData()에만 is_in_stock설정되었습니다. 플래그를 사용하면 컬렉션의 모든 제품에 대해 수량, 이월 주문 등을 얻을 수 있습니다

foreach ($products as $product) {
    echo $product->getStockItem()->getQty();
}

1

다음과 같이 StockItem을 통해 제품 재고 수량에 액세스 할 수 있습니다.

$_product->getStockItem()->getQty();

테스트 template/catalog/product/view.phtml

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.