Làm thế nào để có được địa chỉ khách hàng bằng ID khách hàng?


9

Làm thế nào để có được địa chỉ khách hàng / địa chỉ thanh toán bằng ID khách hàng? Đây là những gì tôi đã làm cho đến nay:

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

Câu trả lời:


10

Bạn không thể truy xuất địa chỉ dựa trên id khách hàng để mã này sẽ không bao giờ hoạt động:

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

Bởi vì getByCustomerIdphương thức không tồn tại trong các lớp hợp đồng dịch vụ.

Những gì bạn có thể làm là sử dụng lớp khách hàng hợp đồng dịch vụ dữ liệu với mã sau:

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

Xin lưu ý rằng getAddressessẽ trả về một mảng Magento\Customer\Api\Data\AddressInterface.

Nếu bạn cần địa chỉ thanh toán mặc định, bạn có thể gọi:

$billingAddress = $customer->getDefaultBilling(); 

nhưng khi tôi sử dụng $customer->getDefaultBilling();nó sẽ trả về NULL
anh chàng đơn giản

@simpleguy đó là vì khách hàng mà bạn đang kiểm tra không có địa chỉ thanh toán mặc định
Raphael tại Digital Pianism 14/2/2017

@RaphaelatDigitalPianism Nó không hoạt động đối với tôi. Bạn có thể vui lòng cho đàn ông biết làm thế nào tôi có thể nhận được chi tiết này.
Gaurav Agrawal

Làm thế nào để có được địa chỉID?
jafar pinjar

6

Để có được khách hàng bổ sung bằng cách sử dụng id đơn hàng trong tệp .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;
    ...
}

Sử dụng trong chức năng của bạn: -

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

bạn có thể lấy bộ sưu tập địa chỉ như sau: -

$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());
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.