Как получить идентификатор адреса доставки / выставления счета для заказа вне основного API Magento?

Я хочу получить идентификатор адреса доставки / выставления счета из только что завершенного заказ из Magento.

Я пробовал следующий код, но он не работал:

Mage :: getModel ('sales / order') -> load ($ array_data ["order_id"]) -> getShippingAddressId ()

У кого-то есть идеи?

9
задан Capitaine 30 August 2010 в 12:48
поделиться

1 ответ

Во-первых, разбейте связанный вызов, чтобы убедиться, что вы действительно загружаете заказ с помощью

$order = Mage::getModel('sales/order')->load($array_data["order_id"]);
var_dump($order->getData());

. Предполагая, что вы загрузили заказ, посмотрите на приведенные выше значения. Там нет shipping_address_id. В сочетании с отсутствием метода getShippingAddressId для Mage_Sales_Model_Order ваш код не работает.

Попробуйте

$order = Mage::getModel('sales/order')->load($array_data["order_id"]);
$id    = $order->getShippingAddress()->getId();

Адресный метод getShippingAddress вернет адресный объект, идентификатор которого можно проверить. Если вы посмотрите на определение класса Mage_Sales_Model_Order, вы увидите определения методов

//magento 1.4
public function getShippingAddress()
{
    foreach ($this->getAddressesCollection() as $address) {
        if ($address->getAddressType()=='shipping' && !$address->isDeleted()) {
            return $address;
        }
    }
    return false;
}

public function getAddressesCollection()
{
    if (is_null($this->_addresses)) {
        $this->_addresses = Mage::getResourceModel('sales/order_address_collection')
            ->addAttributeToSelect('*')
            ->setOrderFilter($this->getId());

        if ($this->getId()) {
            foreach ($this->_addresses as $address) {
                $address->setOrder($this);
            }
        }
    }

    return $this->_addresses;
}

TL;DR для приведенного выше кода: идентификаторы адресов не сохраняются с моделью заказов. Адреса всех заказов хранятся в виде объекта sales/order_address или Mage_Sales_Model_Order_Address.

7
ответ дан 4 December 2019 в 07:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: