2011-04-20 69 views
3

给定一个magento订单对象,如何找到与该订单相关的跟踪号码?来自订单对象的Magento跟踪号码

$order = Mage::getModel('sales/order')->loadByIncrementId(100000064); 

$shipmentCollection = Mage::getResourceModel('sales/order_shipment_collection') 
    ->setOrderFilter($order) 
    ->load(); 
foreach ($shipmentCollection as $shipment){ 
    // This will give me the shipment IncrementId, but not the actual tracking information. 
    $shipment->getData(); 
} 
+0

http://stackoverflow.com/questions/3155671/magento-cronjob-outside-magento-to-update-shipment-status一些相关的代码在这里。 – B00MER 2011-04-20 22:40:12

+0

一个答案,帮助我谷歌搜索这个:http://stackoverflow.com/questions/9433627/ – 2013-01-16 23:02:28

回答

4

请尝试以下代码:虽然未经过测试。

$shipment->getAllTracks(); 
0

应该

Mage::getResourceModel('sales/order_shipment_collection') 
    ->setOrderFilter($order) 
    ->load(); 
+1

这是一个很好的观点。我已经纠正了匹配的问题。 – clockworkgeek 2011-05-23 11:13:16

2

使用

$order->getTrackingNumbers() 
9

我挣扎过这一个了,返回空值。终于搞清楚了。首先,如前所述,检索与给定的顺序有关的货物收集:

$shipmentCollection = Mage::getResourceModel('sales/order_shipment_collection') 
      ->setOrderFilter($order) 
     ->load(); 
     foreach ($shipmentCollection as $shipment){ 
      // This will give me the shipment IncrementId, but not the actual tracking information. 
      foreach($shipment->getAllTracks() as $tracknum) 
      { 
       $tracknums[]=$tracknum->getNumber(); 
      } 

     } 

数组$ tracknums现在将包含每个链接到这个订单/出货跟踪数字。

2

你可以简单地这样做:

$order = Mage::getModel('sales/order')->loadByIncrementId(100000064); 
$trackNumber = array(); 
foreach ($order->getTracksCollection() as $track){ 
    $trackNumber[] = $track->getNumber(); 
}