我需要检查订单是否已经设置了发货。我唯一可以使用的数据是订单的增量ID。我正在获取模型订单的实例,但没有找到可以获取装运实例的方法。

我正在使用此代码:

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

但是我如何获得发货实例?我知道我可以调用Mage::getModel('sales/order_shipment')->loadByIncrementId($shipment_increment_id),但是我如何获得 cargo 增量ID?

最佳答案

假设编写此内容的人可能也需要做您需要做的事情。通常,当Magento对象具有一对多关系时,您可以找到一种在一个对象上加载多个对象的方法。

您已经有了一个类别名sales/order

这对应于Mage_Sales_Model_Order(在标准安装中)。

您可以在app/code/core/Mage/Sales/Model/Order.php上找到此类。

如果您检查此类,则其中有7种方法带有“ship”一词

function canShip
function setShippingAddress
function getShippingAddress
function getShip
function getShipmentsCollection
function hasShip
function prepareShip

在这7个中,只有getShipmentsCollection的语义表示一种用于获取订单发货的方法。所以尝试
foreach($order->getShipmentsCollection() as $shipment)
{
    var_dump(get_class($shipment));
    //var_dump($shipment->getData());
}

或查看getShipmentsCollection的来源
public function getShipmentsCollection()
{
    if (empty($this->_shipments)) {
        if ($this->getId()) {
            $this->_shipments = Mage::getResourceModel('sales/order_shipment_collection')
                ->setOrderFilter($this)
                ->load();
        } else {
            return false;
        }
    }
    return $this->_shipments;
}

关于magento - 如何检查订单是否在Magento中发货?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7506259/

10-12 16:44
查看更多