¿Cómo obtener la dirección del cliente por ID de cliente?

9

¿Cómo obtener la dirección del cliente / dirección de facturación por ID de cliente? Esto es lo que he hecho hasta ahora:

$customerId = $_POST["customer_id"];
$customer = $this->_customerRepository->getById($customerId);
$address = $this->_addressRepository->getByCustomerId($customerId);//error
chico sencillo
fuente

Respuestas:

10

No puede recuperar una dirección basada en la identificación del cliente, por lo que este código nunca funcionará:

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

Porque el getByCustomerIdmétodo no existe en las clases de contrato de servicio.

Sin embargo, lo que puede hacer es utilizar la clase de cliente del contrato de servicio de datos con el siguiente código:

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

Tenga en cuenta que getAddressesdevolverá una matriz de Magento\Customer\Api\Data\AddressInterface.

Si necesita la dirección de facturación predeterminada, puede llamar:

$billingAddress = $customer->getDefaultBilling(); 
Raphael en Digital Pianism
fuente
pero cuando lo uso $customer->getDefaultBilling();, devuelve NULL
chico simple
@simpleguy eso se debe a que el cliente que está probando no tiene una dirección de facturación predeterminada probablemente
Raphael en Digital Pianism
@RaphaelatDigitalPianism No funciona para mí. ¿Pueden decirle a los hombres cómo puedo obtener estos detalles?
Gaurav Agrawal
¿Cómo obtener addressID?
jafar pinjar
6

Para obtener la dirección del cliente utilizando la identificación del pedido en el archivo .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
fuente
1
protected $_address;

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

Uso en su función: -

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

puede obtener la recopilación de direcciones de la siguiente manera: -

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

$ privado $ 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
fuente