Magento – Magento 2: How to add customer address programmatically

customer-addressmagento2programmatically

I have successfully created a customer programmatically. Now I want to add an address to this customer. How can I do this programmatically?

Best Answer

Using Magento\Customer\Api\AddressRepositoryInterface; you can create customer address.

namespace {NameSpace};

/**
 * Description of Address
 */
class Address {

/**
 * @var Magento\Customer\Api\Data\AddressInterfaceFactory
 */
protected $addressDataFactory;

/**
 * @var \Magento\Customer\Api\AddressRepositoryInterface
 */
protected $addressRepository;

public function __construct(
    \Magento\Customer\Api\AddressRepositoryInterface $addressRepository,
    \Magento\Customer\Api\Data\AddressInterfaceFactory $addressDataFactory
) {
    $this->addressRepository = $addressRepository;
    $this->addressDataFactory = $addressDataFactory;
}

public function saveCustomer()
{
    $address = $this->addressDataFactory->create();
    $address->setFirstname($firstName)
            ->setLastname($lastName)
            ->setCountryId($countryId)
            ->setRegionId($regionId)
            ->setRegion($regionName)
            ->setCity($city)
            ->setPostcode($postcode)
            ->setCustomerId($customerId)
            ->setStreet($street)
            ->setTelephone($telephone);

    $this->addressRepository->save($address);
}