Magento'da ürün stok miktarını alın


12

Öğe için ürün stok miktarını almam gerekiyor, nasıl alınır

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

Yanıtlar:


10

Adet almak için masaya katılmanız gerekecek.

Aşağıdaki koda bakınız:

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

Nasıl yaratılmış öznitelik değeri almak için burada örneğin ben boyutu adlı bir öznitelik oluşturduk nasıl bu değeri getirmek için

GÜNCELLEME (Her ne kadar başka bir soru sorsanız da, burada size cevap vereceğim.)

Özel özellik almak için ->addAttributeToSelectbölüme özellik eklemeniz gerekir .

Hala çalışmıyor mu?

Bir ürün modelini yüklemeniz gerekebilir, çünkü bazen bir koleksiyondan çıkardığınızda (sanırım performans nedenleriyle) tüm özel özelliklerin eklenmediğini deneyimledim. Gibi bir şey:

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

Burada oluşturulan öznitelik değeri almak için nasıl örneğin boyutu adında bir öznitelik oluşturduk nasıl bu değeri getirmek için
vellai durai

Deneyin $product->getSize()ya da$product->getData('size')
Adarsh ​​Khatri

Yalnızca geri dönen null değerleri
vellai durai

Özel özelliğinizi eklediniz ->addAttributeToSelectmi? Ne seçeceğinizi söylemelisiniz. aksi takdirde sadece kullanın ->addAttributeToSelect(*). Bu ürünle ilgili her şeyi seçecektir. Bu işe yaramazsa, kısa bir süre içinde güncellenmiş cevabımı kontrol edin.
Adarsh ​​Khatri

Evet ekledim
vellai durai

19

Benim için çalışıyor.

$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

Ürün koleksiyonlarına stok bilgisi eklemek tek bir satırla yapılabilir:

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

Bu bayrak catalog_product_collection_load_aftergözlemcide kullanılır :

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

Bu bayrak ayarlanmadıysa $product->getStockItem()->getData()sadece is_in_stockayarlanmıştır. Bayrakla, koleksiyondaki her ürün için miktar, sınırlar, ... alabilirsiniz

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

1

Ürün stok miktarına StockItem üzerinden şu şekilde erişebilirsiniz:

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

Test tarihi template/catalog/product/view.phtml

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.