お客様IDでお客様の住所を取得する方法は?


9

お客様IDでお客様の住所/請求先住所を取得する方法は?これが私がこれまでに行ったことです:

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

回答:


10

顧客IDに基づいて住所を取得できないため、このコードは機能しません。

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

getByCustomerIdメソッドがサービスコントラクトクラスに存在しないため。

ただし、次のコードでデータサービスコントラクトの顧客クラスを使用できます。

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

getAddresses配列が返されることに注意してくださいMagento\Customer\Api\Data\AddressInterface

デフォルトの請求先住所が必要な場合は、次の番号に電話してください。

$billingAddress = $customer->getDefaultBilling(); 

しかし、$customer->getDefaultBilling();それを使用するとNULLが返されます
単純な男

@simpleguyこれは、テストしている顧客にデフォルトの請求先住所がない可能性があるためです
Raphael at Digital Pianism

@RaphaelatDigitalPianismそれは私のために働いていません。この詳細を入手する方法を男性に知らせてください。
Gaurav Agrawal 2017年

addressIDを取得する方法?
jafar pinjar 2018

6

.phtmlファイルの注文IDを使用して顧客のアドレスを取得するには

$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;
    ...
}

あなたの関数で使用してください:-

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

あなたは以下のようにアドレスコレクションを得ることができます:-

$addresses = $addressObj->getCollection();

0

$プライベート$ 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());
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.