skip to Main Content

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:

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


  1. 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 to customer_address table and customer_address table reference to customer_entity table.

    Login or Signup to reply.
  2. You can get the order as follows
    Whereever your want to invoke this information add following in the Constructor if not already being used.

    protected $checkoutSession;
    public function __construct(
            MagentoCheckoutModelSession $checkoutSession,
            PsrLogLoggerInterface $logger
        )
        {
    
            $this->checkoutSession = $checkoutSession;
            $this->logger = $logger;
        }
    
    
        $order = $session->getLastRealOrder();
        $orderdata = $order->getData();
        $shipping_address_id = $orderdata['shipping_address_ID'];
    

    This address is the final shipping address selected during payment
    stage of the checkout process.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search