I’m having trouble with getting customer address Id as it returns a null value.
This is what I have tried:
$checkout = $this->_sessionCheckout->getQuote();
if ($checkout) {
$shippingAddress = $checkout->getShippingAddress();
if ($shippingAddress) {
$addressId = $shippingAddress->getCustomerAddressId();
$this->_logger->log(100, print_r('address Id: ' . $addressId , true)); //Returns null
/** @var MagentoCustomerApiDataAddressInterface $address */
$address = $this->_addressRepository->getById($addressId);
$address->setCity($city_name);
$this->_addressRepository->save($address);
}
I just need to get customer address Id in order to update the city. I don’t know why it returns a null value.
Edited Details:
The below image shows the saved shipping addresses:
What I want to know is How to know the customer address id of each of those shipping addresses. So I can modify any details I want.
2
Answers
When you place an order as a guest user, you have to add shipping address on checkout page at that time there will be not a customer reference object, so you get value of customer address Id to null.
When you place an order as a registered customer, you should have default shipping address, then only you can get the value of customer address Id.
This happen because
customer_address_id
is a reference tocustomer_address
table andcustomer_address
table reference tocustomer_entity
table.You can get the order as follows
Whereever your want to invoke this information add following in the Constructor if not already being used.