You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Magento 1.9中创建发货单时获取Shipment Id的方法咨询

获取Magento发货单的Shipment Id

嘿,这事儿超简单!你只需要在事务保存成功之后,调用发货单对象的对应方法就能拿到ID啦,分两种常用场景:

  • 如果要获取系统内部的数据库主键ID(纯数字的后台标识),用 $shipment->getId()
  • 如果要获取面向用户的增量发货单号(比如类似 100000123 这种显示在后台的单号),用 $shipment->getIncrementId()

给你调整后的代码示例,把获取ID的逻辑加进去了:

$shipment = $order->prepareShipment($qty);
if ($shipment) {
    $shipment->register();
    $shipment->addComment($history_comment, $email && $includeComment);
    $shipment->getOrder()->setIsInProcess(true);
    try {
        $transactionSave = Mage::getModel('core/resource_transaction')
            ->addObject($shipment)
            ->addObject($shipment->getOrder())
            ->save();
        
        // 事务保存成功后,这里就能拿到有效的Shipment ID了
        $shipmentId = $shipment->getId(); // 数据库主键ID
        $shipmentIncrementId = $shipment->getIncrementId(); // 面向用户的增量发货单号
        
        // 这里可以把ID用于后续逻辑,比如记录日志、关联其他数据等
        Mage::log('Created shipment with internal ID: ' . $shipmentId . ', display ID: ' . $shipmentIncrementId);
        
    } catch (Mage_Core_Exception $e) {
        Mage::getSingleton('adminhtml/session')->addError("Cannot create an empty shipment for ".$order->getIncrementId());
    }
}

划个重点:一定要在 $transactionSave->save() 执行成功之后再获取ID!因为这一步才会把发货单数据真正写入数据库,生成对应的ID。在这之前调用getId()大概率会返回null哦。

内容的提问来源于stack exchange,提问作者Nagaraj Juro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:17:34