How to get the correct shipping address for an order ID? I am using MagentoSalesApiOrderRepositoryInterface
to get the order information by order ID, but there are no methods for getting the shipping address, despite a lot of people on the internet claiming otherwise.
I considered using MagentoSalesApiOrderAddressRepositoryInterface
, and I am able to return a shipping address, but it is not the correct one.
It took me a long time to understand why the get()
method from OrderAddressRepositoryInterface
wasn’t returning the right data when passing the same $orderId
parameter as in OrderRepositoryInterface
, but then I found out that Magento inserts two entries in the sales_order_address
table for each entry in the sales_order
table – for some reason.
The address row from sales_order_address
is then relationally matched with the right order in the sales_order
table by the column shipping_address_id
in the sales_order
table, which corresponds to the entity_id
in the sales_order_address
table.
It would be easy to use OrderAddressRepositoryInterface
if there was a getShippingAddressId()
method declared in OrderRepositoryInterface
, but there is none!
So how can I find/match the right shipping address with a particular order ID? I would love to hear suggestions for how to use the service layer to solve this, and not the persistence or domain layers.