Wie erhalte ich die Kundenadresse anhand der Kunden-ID?

9

Wie erhalte ich die Kundenadresse / Rechnungsadresse anhand der Kunden-ID? Folgendes habe ich bisher getan:

$customerId = $_POST["customer_id"];
$customer = $this->_customerRepository->getById($customerId);
$address = $this->_addressRepository->getByCustomerId($customerId);//error
einfacher Kerl
quelle

Antworten:

10

Sie können keine Adresse basierend auf der Kunden-ID abrufen, sodass dieser Code niemals funktioniert:

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

Weil die getByCustomerIdMethode in den Servicevertragsklassen nicht vorhanden ist.

Sie können jedoch die Kundenklasse des Datendienstvertrags mit dem folgenden Code verwenden:

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

Bitte beachten Sie, dass getAddressesein Array von zurückgegeben wird Magento\Customer\Api\Data\AddressInterface.

Wenn Sie die Standard-Rechnungsadresse benötigen, können Sie anrufen:

$billingAddress = $customer->getDefaultBilling(); 
Raphael beim digitalen Pianismus
quelle
aber wenn ich es benutze $customer->getDefaultBilling();, gebe ich NULL zurück
einfacher Typ
@simpleguy, weil der Kunde, den Sie testen, wahrscheinlich keine Standard-Rechnungsadresse hat
Raphael bei Digital Pianism
@ RaphaelatDigitalPianism Es funktioniert nicht für mich. Können Sie bitte Männer wissen lassen, wie ich diese Details bekommen kann?
Gaurav Agrawal
Wie bekomme ich addressID?
Jafar Pinjar
6

Um die Kundenadresse mithilfe der Bestell-ID in der HTML-Datei abzurufen

$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
quelle
1
protected $_address;

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

Verwendung in Ihrer Funktion: -

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

Sie können die Adressensammlung wie folgt erhalten: -

$addresses = $addressObj->getCollection();
Purushotam Sharma
quelle
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
quelle