รับปริมาณสต็อกสินค้าในวีโอไอพี


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

คำตอบ:


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

วิธีรับค่าแอททริบิวที่สร้างไว้ที่นี่เช่นฉันได้สร้างแอททริบิวชื่อขนาดวิธีดึงค่านั้น

อัปเดต (แม้ว่าคุณควรถามใน qst อื่น แต่ฉันจะตอบที่นี่สำหรับคุณ)

ในการรับแอตทริบิวต์ที่กำหนดเองคุณจะต้องเพิ่มแอตทริบิวต์ใน->addAttributeToSelectส่วน

ยังไม่ทำงานใช่ไหม

คุณอาจต้องโหลดรูปแบบผลิตภัณฑ์เนื่องจากบางครั้งฉันพบว่ามีแอตทริบิวต์ที่กำหนดเองทั้งหมดไม่ได้แนบมาเมื่อคุณดึงออกมาจากคอลเลกชัน (สำหรับเหตุผลด้านประสิทธิภาพที่ฉันเดา) สิ่งที่ต้องการ:

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

วิธีรับค่าคุณลักษณะที่สร้างขึ้นที่นี่เช่นฉันได้สร้างแอตทริบิวต์ที่มีชื่อขนาดวิธีดึงค่านั้น
vellai durai

ลอง$product->getSize()หรือ$product->getData('size')
Adarsh ​​Khatri

ค่า Null ที่ส่งคืนเท่านั้น
vellai durai

คุณเพิ่มแอตทริบิวต์ที่กำหนดเองแล้ว->addAttributeToSelectหรือยัง? คุณต้องบอกว่าต้องเลือกอะไร มิฉะนั้นก็ใช้->addAttributeToSelect(*)แทน สิ่งนี้จะเลือกทุกอย่างที่เกี่ยวข้องกับผลิตภัณฑ์ หากวิธีนี้ใช้ไม่ได้ให้ตรวจสอบคำตอบที่อัปเดตแล้ว
Adarsh ​​Khatri

ใช่ฉันได้เพิ่ม
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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.