【问题标题】:Magento - get Customer Address id of order shipping addressMagento - 获取订单送货地址的客户地址 ID
【发布时间】:2014-08-30 19:00:47
【问题描述】:

我通过 $order->getShippingAddress() 得到了一个订单的收货地址

$order = Mage::getModel('Mage_Sales_Model_Order');
$order->loadByIncrementId($ext_order_id);
$address = $order->getShippingAddress();

我通过

加载 DefaultBillingAddress
$address_default_billing = Mage::getSingleton('customer/session')->getCustomer()
                                    ->getDefaultBillingAddress();

现在我想比较它们,但是有问题。如果我对他们俩都做了getId(),即使我在结帐时选择了邮寄的账单地址,他们也有不同的id,所以它们必须相同但id不同..怎么会出现?有没有办法在结帐时获取当前送货地址的客户地址 ID?

例如:$address->getId() 返回 44,$address_default_billing->getId() 返回 6

模型中客户地址的 6 是正确的 id,但是 order-shipping-id 是错误的..

谢谢

【问题讨论】:

    标签: magento checkout addressbook shipping billing


    【解决方案1】:

    地址id 永远不会相同,因为在下订单后,地址信息将“永远”不会改变,而客户地址会随着客户移动或更改送货地址而改变。

    订单地址存储在sales_flat_order_address

    客户地址存储在customer_address_entity*

    要比较地址要比较各个元素

    $address_data = $address->getData()
    $address_default_billing_data = $address_default_billing->getData()
    
    $compare = array('firstname', ..., 'city');
    
    foreach($compare as $c){
       if($address_data[$c] != $address_default_billing_data[$c]){
         //not equal
         break;
       }
    
    }
    

    【讨论】:

      【解决方案2】:

      您可以通过sales_flat_order_address表中的customer_address_id字段获取客户地址

      这里是代码:

      $order = Mage::getModel('sales/order');
      $order->loadByIncrementId($ext_order_id);
      $address = $order->getShippingAddress();
      $address->getData('customer_address_id');
      

      【讨论】:

      • 谢谢你。很有帮助,而且没有任何问题。
      猜你喜欢
      • 1970-01-01
      • 2016-07-26
      • 1970-01-01
      • 2019-09-13
      • 1970-01-01
      • 1970-01-01
      • 2018-06-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多