Magento 2 – How to Create Customer Address by Customer ID

customercustomer-addressmagento2

I am using below code to create customer address using customerId

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$addresss = $objectManager->get('\Magento\Customer\Model\AddressFactory');
$address = $addresss->create();

$address->setCustomerId(1256)
        ->setFirstname('test')
        ->setLastname('test')
        ->setCountryId('GB')
        ->setPostcode('NW p7j')
        ->setCity('test')
        ->setTelephone('1232323')
        ->setStreet('test')
        ->setIsDefaultBilling('1')
        ->setSaveInAddressBook('1');
        try{
            $address->save();
        }catch (\Exception $e) {
            Zend_Debug::dump($e->getMessage());
        }

I have two lines for street, how can i set that? Right now street is storing with one line. also how can we update address if that customer already has any address?

Best Answer

Try the below code:

<?php
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$addresss = $objectManager->get('\Magento\Customer\Model\AddressFactory');
$address = $addresss->create();

$address->setCustomerId(3)
        ->setFirstname('test')
        ->setLastname('test')
        ->setCountryId('GB')
        ->setPostcode('NW p7j')
        ->setCity('test')
        ->setTelephone('1232323')
        ->setStreet(['test','test2'])
        ->setIsDefaultBilling('1')
        ->setSaveInAddressBook('1');
        try{
            $address->save();
        }catch (\Exception $e) {
            Zend_Debug::dump($e->getMessage());
        }
?>

You need to pass array to street like my answer to save it in street, street1, street2 etc.

UPDATED ANSWER: If you have $line = 'test'; and $line2 = 'test' then try the below code for street

->setStreet([$line,$line2])