Nhận số lượng sản phẩm chứng khoán trong magento


12

Tôi cần lấy số lượng sản phẩm chứng khoán cho sản phẩm, làm thế nào để có được điều đó

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

Câu trả lời:


10

Bạn sẽ cần phải tham gia vào bàn để có được qty.

Xem mã dưới đây:

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

Làm thế nào để có được giá trị thuộc tính được tạo ở đây, ví dụ tôi đã tạo một thuộc tính có tên là kích thước làm thế nào để lấy giá trị đó

CẬP NHẬT (Mặc dù bạn nên hỏi trong một qst khác, nhưng tôi sẽ trả lời ở đây cho bạn.)

Để có được thuộc tính tùy chỉnh, bạn sẽ cần thêm thuộc tính trong ->addAttributeToSelectphần.

Vẫn không làm việc?

Bạn có thể cần tải một mô hình sản phẩm vì đôi khi tôi đã trải nghiệm rằng không phải tất cả các thuộc tính tùy chỉnh được đính kèm khi bạn kéo nó ra khỏi bộ sưu tập (dự định vì lý do hiệu suất tôi đoán). Cái gì đó như:

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

Làm thế nào để có được giá trị thuộc tính được tạo ở đây, ví dụ như tôi đã tạo một thuộc tính có tên là kích thước làm thế nào để lấy giá trị đó
vellai durai

Hãy thử $product->getSize()hoặc$product->getData('size')
Adarsh ​​Khatri

Nó chỉ trả về giá trị null
vellai durai

Bạn đã thêm thuộc tính tùy chỉnh của bạn trong ->addAttributeToSelect? Bạn phải nói những gì để chọn. mặt khác chỉ sử dụng ->addAttributeToSelect(*)thay thế. Điều này sẽ chọn mọi thứ liên quan đến sản phẩm. Nếu điều này không hiệu quả thì hãy kiểm tra câu trả lời cập nhật của tôi ngay.
Adarsh ​​Khatri

Có tôi đã thêm
vellai durai

18

Nó làm việc cho tôi.

$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

Thêm thông tin chứng khoán vào bộ sưu tập sản phẩm có thể được thực hiện với một dòng duy nhất:

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

Cờ này được sử dụng trong catalog_product_collection_load_afterquan sát viên:

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

Nếu cờ này không được đặt $product->getStockItem()->getData()thì chỉ is_in_stockđược đặt. Với cờ, bạn có thể nhận được qty, backorder, ... cho mọi sản phẩm trong bộ sưu tập

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

1

Bạn có thể truy cập số lượng sản phẩm chứng khoán thông qua StockItem như thế này:

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

Đã thử nghiệm trong template/catalog/product/view.phtml

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.