Magento:如何获得订单商品中特定产品的数量?

时间:2013-04-15 08:00:02

标签: php magento foreach

我有这个脚本来帮助我从Magento 1.6中的订单商品中获取特定产品的QTY。这应该在一个简单的表格中可视化。到目前为止,这是我的代码:

// Load the product collection
$collection = Mage::getModel('catalog/product')
 ->getCollection()
 ->addAttributeToSelect('*');

foreach ($collection as $product) {
    $id = $product->getId();
    $product_name = $product->getName();

    $order_output = '';
    $order_output .= '<table style="width: 500px">';
        $order_output .= '<tr><td colspan="3"><strong>'.$product_name.'</strong></td></tr>';
        $order_output .= '<tr><td><strong>Order id</strong></td><td><strong>Total price</strong></td><td><strong>Qty</strong></td><td><strong>Customer name</strong></td></tr>';

        // Get all unique order IDs for items with specifix product ID
        $time = time();
        $to = date('Y-m-d H:i:s', $time);
        $from = date('2012-07-01 08:00:00');
        $orderItems = Mage::getResourceModel('sales/order_item_collection')
        ->addAttributeToFilter('product_id', $id)
        ->addAttributeToFilter('created_at', array('from' => $from, 'to' => $to))
        ->addAttributeToSelect('order_id')
        ->load();

        foreach ($orderItems as $order) {
             $order_data = Mage::getModel('sales/order')->load($order['order_id']);
             $items = $order_data->getColletion();
             $order_id = $order['order_id'];
             $total = $order_data->getGrandTotal();
             $customer_name = $order_data->getCustomerName();

             foreach ($items as $item) {
                $product_id = $item->getProductId();
                if ($product_id == $id) {
                    $number_of_prod =  $item->getQtyOrdered();
                }       
             }

             $order_output .= '</tr>';
                $order_output .= '<td width="20%" align="left">'.$order_id.'</td>';
                $order_output .= '<td width="20%">'.number_format($total, 2, '.', '').' RMB</td>';
                $order_output .= '<td width="20%">'.$number_of_prod.'</td>';
                $order_output .= '<td width="40%">'.$customer_name.'</td>';
             $order_output .= '</tr>';     
        }
    $order_output .= '</table>';

    header ("Content-Type: text/html; charset=UTF-8");
    echo $order_output;
}

所有东西都正确填充,唯一缺少的是QTY。您可以看到输出的附加图像。

非常感谢任何帮助。

enter image description here

更新

当我使用时:

$items = $order_data->getAllItems();

我得到了数量,但现在各个产品的所有订单都没有列出。

2 个答案:

答案 0 :(得分:20)

您是否尝试过其他方法来获取有序的数量?

$item->getData('qty_ordered');

$item['qty_ordered'];

答案 1 :(得分:14)

还有另一个简单的功能:

$item->getQtyOrdered();