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

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(); 

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'];
}

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();

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());
}
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.