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

Answers:


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

如何在这里获取创建的属性值,例如,我创建了一个名为size的属性,如何获取该值

更新(尽管您应该在另一个qst中询问,但是我会在这里为您回答。)

要获取自定义属性,您需要在->addAttributeToSelect部分中添加属性。

还是不行?

您可能需要加载产品模型,因为有时我会遇到将所有自定义属性都从集合中拉出时附加的所有自定义属性的情况(我想是出于性能方面的考虑)。就像是:

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

如何在此处获取创建的属性值,例如,我已经创建了一个名为size的属性如何获取该值
vellai durai

试试$product->getSize()$product->getData('size')
Adarsh Khatri

仅返回空值
vellai durai

您是否在中添加了自定义属性->addAttributeToSelect?您必须告诉您选择什么。否则只需使用->addAttributeToSelect(*)。这将选择与产品相关的所有内容。如果这不起作用,请稍后检查我更新的答案。
阿达什·哈特里

是的,我添加了
vellai durai

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.