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,
    );
}
vellai durai
sumber

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();  
Adarsh ​​Khatri
sumber
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();
}
Ajay Patel
sumber
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();
}
sv3n
sumber
1

Anda dapat mengakses kuantitas stok produk melalui StockItem seperti ini:

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

Diuji dalam template/catalog/product/view.phtml

Andreas Riedmüller
sumber