Zuerst brechen auseinander Ihren gekettet Anruf, um sicherzustellen, machen Sie Laden tatsächlich einen Auftrag mit
$order = Mage::getModel('sales/order')->load($array_data["order_id"]);
var_dump($order->getData());
Angenommen, Sie die Reihenfolge geladen haben, bei den oben abgeladen Werten suchen. Es gibt keine shipping_address_id
. Das, zusammen mit gibt es keine Methode getShippingAddressId
auf einem Mage_Sales_Model_Order
ist, warum Ihr Code nicht funktioniert.
Versuchen
$order = Mage::getModel('sales/order')->load($array_data["order_id"]);
$id = $order->getShippingAddress()->getId();
Die getShippingAddress
Adresse Methode wird eine Adresse Objekt zurückgeben, die Sie für die ID überprüfen können. Wenn Sie bei der Definition Mage_Sales_Model_Order
Klasse aussehen, können Sie die Methode sehen
//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;
}
Die TL-Definitionen; DR für den Code oben, stellen Sie Adresse IDs nicht mit dem Auftrag Modell gespeichert. Die Adressen für alle Aufträge werden als Objekt sales/order_address
oder Mage_Sales_Model_Order_Address
gespeichert.
großen Durchlauf Alan. Ein paar kleinere Tippfehler drin "Werte * s * umped oben" und "Die * tl; dr * für den obigen Code" Prost, JD –
Ich kann nicht erwartet werden, richtig Englisch vor Mittag zu schreiben. (Danke) –
sicherlich nicht vor Koffein :) Und BTW, ich habe nicht realisiert, dass "tl; dr" eine absichtliche Abkürzung war - Danke an urbandictionary dafür! :) –