Dapatkan jumlah stok produk di magento


12

Saya perlu mendapatkan jumlah stok produk untuk barang tersebut, bagaimana cara mendapatkannya

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

Jawaban:


10

Anda harus bergabung dengan tabel untuk mendapatkan qty.

Lihat kode di bawah ini:

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

Cara mendapatkan nilai atribut yang dibuat di sini untuk misalnya saya telah membuat atribut bernama ukuran cara mengambil nilai itu

UPDATE (Meskipun Anda harus bertanya di qst lain, tetapi saya akan menjawab di sini untuk Anda.)

Untuk mendapatkan atribut khusus, Anda perlu menambahkan atribut di ->addAttributeToSelectbagian.

Masih tidak berfungsi?

Anda mungkin perlu memuat model produk karena kadang-kadang saya alami bahwa tidak semua atribut khusus dilampirkan ketika Anda mengeluarkannya dari koleksi (dimaksudkan untuk alasan kinerja, saya rasa). Sesuatu seperti:

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

cara mendapatkan nilai atribut yang dibuat di sini untuk misalnya saya telah membuat atribut bernama ukuran cara mengambil nilai itu
vellai durai

Coba $product->getSize()atau$product->getData('size')
Adarsh ​​Khatri

Hanya mengembalikan nilai nol
vellai durai

Sudahkah Anda menambahkan atribut khusus Anda ->addAttributeToSelect? Anda harus memberi tahu apa yang harus dipilih. jika tidak gunakan ->addAttributeToSelect(*)saja. Ini akan memilih semua yang terkait dengan produk. Jika ini tidak berhasil maka periksa jawaban saya yang diperbarui segera.
Adarsh ​​Khatri

Ya saya telah menambahkan
vellai durai

19

Ini bekerja untuk saya.

$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

Menambahkan informasi stok ke koleksi produk dapat dilakukan dengan satu baris:

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

Bendera ini digunakan sebagai catalog_product_collection_load_afterpengamat:

/**
 * 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;
}

Jika bendera ini tidak disetel, $product->getStockItem()->getData()hanya is_in_stockmengatur. Dengan flag, Anda bisa mendapatkan qty, backorder, ... untuk setiap produk dalam koleksi

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

1

Anda dapat mengakses kuantitas stok produk melalui StockItem seperti ini:

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

Diuji dalam template/catalog/product/view.phtml

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.