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
相关产品推荐
相关产品推荐

