Magento में उत्पाद स्टॉक मात्रा प्राप्त करें


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(),
    );
}

कैसे बनाया जाता है विशेषता मूल्य यहाँ के लिए उदाहरण के लिए मैंने एक विशेषता नाम आकार बनाया है कि कैसे उस मूल्य को लाने के लिए

अद्यतन (हालांकि आपको एक और qst में पूछना चाहिए, लेकिन मैं यहां आपके लिए जवाब दूंगा।)

कस्टम विशेषता प्राप्त करने के लिए आपको ->addAttributeToSelectअनुभाग में विशेषता जोड़ने की आवश्यकता होगी ।

फिर भी काम नहीं करता है?

आपको एक उत्पाद मॉडल को लोड करने की आवश्यकता हो सकती है क्योंकि कभी-कभी मैंने अनुभव किया है कि जब आप इसे संग्रह से बाहर निकालते हैं, तो सभी कस्टम विशेषताएँ संलग्न नहीं होती हैं (प्रदर्शन के कारणों से मुझे लगता है)। कुछ इस तरह:

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

कैसे बनाया जाए विशेषता मूल्य यहाँ के लिए उदाहरण के लिए मैंने एक विशेषता बनाई है जिसका नाम आकार है कि मूल्य कैसे प्राप्त करें
वेल्लई दुरई

कोशिश करो $product->getSize()या$product->getData('size')
आदर्श खत्री

इसकी वापसी शून्य मानों
वेल्लई दुरई

क्या आपने अपनी कस्टम विशेषता को इसमें जोड़ा है ->addAttributeToSelect? आपको बताना है कि क्या चयन करना है। अन्यथा सिर्फ ->addAttributeToSelect(*)इसके बजाय उपयोग करें । यह उत्पाद से जुड़ी हर चीज का चयन करेगा। यदि यह काम नहीं करता है तो शीघ्र ही मेरे अद्यतन उत्तर की जाँच करें।
आदर्श खत्री

हां मैंने जोड़ा है
वेललाई दुरई

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.