通过订单ID获取订单详细信息


32

我需要通过其ID在Magento中检索订单。如何按ID加载特定订单?

到目前为止,我已经构造了初始查询:

Mage::getModel('sales/order');

Answers:


61

要按增量ID加载订单,可以这样做:

Mage::getModel('sales/order')->loadByIncrementId('10000001'); //use a real increment order id here

要按实体ID加载,您只需调用load

Mage::getModel('sales/order')->load(24999); //use an entity id here

我通过订单ID和增量ID对其进行测试,但它没有显示任何内容,也没有错误!magento.stackexchange.com/questions/39762/...
迈赫迪

那就是我所需要的
FosAvance

17

获取订单明细取决于一些组件:

  1. 订单(通常是订单号)
  2. 订单内容(简单与可配置,不可见等)
  3. 您要提取的信息(定价与其他信息)

加载您的订单:(db:sales_flat_order)

$OrderNumber = "100000001";//Put your order Number here
$order = Mage::getModel('sales/order')->load($OrderNumber, 'increment_id');

接下来,根据订单过滤您的项目集合。

最会做的是:(db:sales_flat_order_item)

$order->getAllVisibleItems();

将显示可见的产品。问题在于,它将从集合中获取“可配置”项(奇怪的是记录中包含孩子的sku)。我发现在SKU更改的情况下这是不可预测的,因为历史SKU不再存在。相反,我发现最好执行以下替代方法。

 $orderItems = $order->getItemsCollection()
        ->addAttributeToSelect('*')
        ->addAttributeToFilter('product_type', array('eq'=>'simple'))
        ->load();
  • getItemsCollection()实际上会返回“父级”和“子级”,这会使大多数人感到困惑。让我们专注于孩子。
  • 传统上,父级(即可配置)将具有定价信息,而子级(简单)则不会。使用Child(简单产品),我们可以确定是否有parent_id(而不是相反的),并且还可以像从getAllVisibleItems()一样,从entity_id(不是相反)中获取产品信息。
  • 遍历订单项的集合

    foreach($orderItems as $sItem) {
    
        //Ignore conf for now
        //Alt. Mage_Catalog_Model_Product_Type::TYPE_SIMPLE = 'simple';
        if($sItem->getProductType() == "simple")
        {
    
    
    
            echo "\n*********************************\nMage Order #: ".$OrderNumber."\n";
            //Simple Item Info from Order
            echo "Type: ".$sItem->getProductType()."\n";
            echo "Order Id: ".$sItem->getOrderId()."\n";
            echo "Product Id: ".$sItem->getProductId()."\n";
            echo "Item Id: ".$sItem->getId()."\n";
            echo "Item Name: ".$sItem->getName()."\n";
            echo "Item Sku: ".$sItem->getSku()."\n";
            echo "Item Price: ".$sItem->getPrice()."\n";
    
            $pItemId = $sItem->getParentItemId();
            echo "Parent Item Id: ".$pItemId."\n";
    
            echo "\n*****\n";
    //Get Parent Item Information
    $item = Mage::getModel('sales/order_item')->load("$pItemId"); //use an item_id here
    
            //Testing, want to see whats inside the parent/configurable item?
            //print_r($item->toArray());
    
            echo "Parent Type: ".$item->getProductType()."\n";
            echo "Parent Order Id: ".$item->getOrderId()."\n";
            echo "Product Id: ".$item->getProductId()."\n";
            echo "Item Id: ".$item->getId()."\n";
            echo "Parent Item Price: ".$item->getPrice()."\n";
            echo "Qty: ".$qty = intval($item->getQtyOrdered())."\n";
    
            //get Active Product Data
            $nProduct = Mage::getModel('catalog/product')->load($sItem->getProductId());
    $nSku = $nProduct->getSku();
        echo "new Product UPC:".$nUpc = $nProduct->getUpc() . "\n";
            echo "new Product Price:".$nPrice = $nProduct->getPrice(). "\n";
    
            }
        }
    

只是注意,你intvalgetQtyOrdered,但可以是一个十进制值:)
哈利Mustoe-普雷费尔

在哪里可以找到有关模型内置函数的所有文档,例如addAttributeToSelect。谢谢。
Iftakharul Alam
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.