Create a customer address to already exist customer - Magento

magento, model, php

Solution

You have to save customer address in different way, following is address saving code.

$customerAddress = Mage::getModel('customer/address');

$customerAddress->setData($addressData)
        ->setCustomerId($customer->getId())
        ->setSaveInAddressBook('1');

$customerAddress->save();

The full code will look like:

$customerModel = Mage::getModel('customer/customer');
$customer = $customerModel->setWebsiteId(1)->loadByEmail($_email);

if($customer->getId()) {
    $addressData =  array (
        'firstname' => $customer->getFirstname(),
        'lastname' => $customer->getLastname(),
        'street' => "$_s1
$_s2
$_s3
$_s4",
        'city' => $_city,
        'country_id' => 'BR',
        'region_id' => $_regionid,
        'postcode' => $_cep,
        'telephone' => $_tel,
        'celular' => $_cel,
        'is_default_billing' => 1,
        'is_default_shipping' => 1
    );

    $customerAddress = Mage::getModel('customer/address');

    $customerAddress->setData($addressData)
        ->setCustomerId($customer->getId())
        ->setSaveInAddressBook('1');

    $customerAddress->save();

    //And reload customer object
    $customer = Mage::getModel('customer/customer')->load($customer->getId());
    //Check customer data
    print_r($customer->getData());
    //Check addresses
    foreach($customer->getAddresses() as $address)
    {
        print_r($address);
    }
}

Problem

I'm trying create programmatically a new address to customers that was imported a some time ago for me. My Code: ``` //All variables about customer address info are filled $customerModel = Mage::getModel('customer/customer'); $customer = $customerModel->setWebsiteId(1)->loadByEmail($_email); if($customer->getId()) { $addressData = array ( 'firstname' => $customer->getFirstname(), 'lastname' => $customer->getLastname(), 'street' => "$_s1 $_s2 $_s3 $_s4", 'city' => $_city, 'country_id' => 'BR', 'region_id' => $_regionid, 'postcode' => $_cep, 'telephone' => $_tel, 'celular' => $_cel, 'is_default_billing' => 1, 'is_default_shipping' => 1 ); $address = Mage::getModel('customer/address'); $address->addData($addressData); $customer->addAddress($address); try { print_r($addressData); $customer->save(); } catch (Exception $e) { } } ``` Object loaded '$customer' isnt what I need: a full customer object. Any Idea?

Original source