Magento - 获取订单送货地址的客户地址ID

时间:2014-07-09 16:23:32

标签: magento checkout addressbook shipping billing

我通过$ 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?

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

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

由于

2 个答案:

答案 0 :(得分:3)

您可以在customer_address_id

中的sales_flat_order_address字段获取客户地址

这里是代码:

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

答案 1 :(得分:0)

地址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;
   }

}