How to get customer address by customer ID?
You cannot retrieve an address based on the customer id so this code will never work:
$address = $this->_addressRepository->getByCustomerId($customerId);//error
Because the getByCustomerId
method does not exist in the service contract classes.
What you can do though, is use the data service contract customer class with the following code:
$customerId = $_POST["customer_id"];
$customer = $this->_customerRepository->getById($customerId);
$addresses = $customer->getAddresses();
Please note that getAddresses
will return an array of Magento\Customer\Api\Data\AddressInterface
.
If you need the default billing address you can call:
$billingAddress = $customer->getDefaultBilling();
For get customer adderess using order id in .phtml file
$customerId = 3;
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$customerObj = $objectManager->create('Magento\Customer\Model\Customer')->load($customerId);
$customerAddress = array();
foreach ($customerObj->getAddresses() as $address)
{
$customerAddress[] = $address->toArray();
}
foreach ($customerAddress as $customerAddres) {
echo $customerAddres['street'];
echo $customerAddres['city'];
}
protected $_address;
public function __construct(
...
\Magento\Customer\Model\Address $address,
...
)
{
...
$this->_address = $address;
...
}
Use in your function:-
$addressObj = $this->_address;
$addressObj->load($addressid);
you can get address collection as below:-
$addresses = $addressObj->getCollection();