Ottieni quantità di prodotti in magento


12

Devo ottenere la quantità di scorta del prodotto per l'articolo, come ottenerlo

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

Risposte:


10

Dovrai unirti al tavolo per ottenere qty.

Vedi sotto il codice:

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

Come ottenere il valore dell'attributo creato qui per es. Ho creato un attributo chiamato size come recuperare quel valore

AGGIORNAMENTO (Anche se dovresti chiedere in un'altra domanda, ma risponderò qui per te.)

Per ottenere l'attributo personalizzato dovrai aggiungere l'attributo nella ->addAttributeToSelectsezione.

Non funziona ancora?

Potrebbe essere necessario caricare un modello di prodotto poiché a volte ho riscontrato che non tutti gli attributi personalizzati sono associati quando lo si estrae da una raccolta (inteso per motivi di prestazioni, immagino). Qualcosa di simile a:

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

come ottenere il valore dell'attributo qui, ad es. ho creato un attributo chiamato size come recuperare quel valore
vellai durai

Prova $product->getSize()o$product->getData('size')
Adarsh ​​Khatri


Hai aggiunto il tuo attributo personalizzato in ->addAttributeToSelect? Devi dire cosa selezionare. altrimenti basta usare ->addAttributeToSelect(*)invece. Questo selezionerà tutto ciò che riguarda il prodotto. Se questo non funziona, controlla la mia risposta aggiornata a breve.
Adarsh ​​Khatri,

Sì, ho aggiunto
vellai durai

19

Funziona per me.

$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

L'aggiunta di informazioni di magazzino alle collezioni di prodotti può essere effettuata con una sola riga:

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

Questo flag viene utilizzato catalog_product_collection_load_afternell'osservatore:

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

Se questo flag non è impostato, $product->getStockItem()->getData()è is_in_stockimpostato solo . Con flag puoi ottenere quantità, arretrati, ... per ogni prodotto in collezione

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

1

È possibile accedere alla quantità di prodotti disponibili tramite StockItem in questo modo:

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

Testato in template/catalog/product/view.phtml

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.