Comment obtenir l'adresse client par identifiant client?

9

Comment obtenir l'adresse client / l'adresse de facturation par identifiant client? voici ce que j'ai fait jusqu'à présent:

$customerId = $_POST["customer_id"];
$customer = $this->_customerRepository->getById($customerId);
$address = $this->_addressRepository->getByCustomerId($customerId);//error
gars simple
la source

Réponses:

10

Vous ne pouvez pas récupérer une adresse basée sur l'ID client, donc ce code ne fonctionnera jamais:

$address = $this->_addressRepository->getByCustomerId($customerId);//error

Parce que la getByCustomerIdméthode n'existe pas dans les classes de contrat de service.

Cependant, vous pouvez utiliser la classe de clients du contrat de service de données avec le code suivant:

$customerId = $_POST["customer_id"];
$customer = $this->_customerRepository->getById($customerId);
$addresses = $customer->getAddresses();

Veuillez noter que getAddressescela renverra un tableau de Magento\Customer\Api\Data\AddressInterface.

Si vous avez besoin de l'adresse de facturation par défaut, vous pouvez appeler:

$billingAddress = $customer->getDefaultBilling(); 
Raphael chez Digital Pianism
la source
mais quand je l'utilise $customer->getDefaultBilling();retourne NULL
simple guy
@simpleguy c'est parce que le client que vous testez n'a probablement pas d'adresse de facturation par défaut
Raphael au Digital Pianism
@RaphaelatDigitalPianism Cela ne fonctionne pas pour moi. Pouvez-vous s'il vous plaît laisser les hommes savoir comment je peux obtenir ces détails.
Gaurav Agrawal
Comment obtenir addressID?
jafar pinjar
6

Pour obtenir l'adresse du client à l'aide de l'ID de commande dans le fichier .phtml

$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'];
}
Abhinav Singh
la source
1
protected $_address;

public function __construct(
    ...
    \Magento\Customer\Model\Address $address,
    ...     
)
{
    ...
    $this->_address = $address;
    ...
}

Utilisez dans votre fonction: -

$addressObj = $this->_address;
$addressObj->load($addressid); 

vous pouvez obtenir la collecte d'adresses comme ci-dessous: -

$addresses = $addressObj->getCollection();
Purushotam Sharma
la source
0

$ private $ customerFactory;

public function __construct(
    \Magento\Customer\Model\CustomerFactory $customerFactory,
    Context $context
) {
    parent::__construct($context);
    $this->customerFactory = $customerFactory;
}

public function execute()
{
    $customerId = 1;
    $customer = $this->customerFactory->create();
    echo "<pre>";
    var_dump($customer->getAddressCollection()->addFieldToFilter('parent_id',$customerId)->getData());
}
bashid mohd
la source