【问题标题】:Magento 2 - Get Customer Address Id through Shipping Address at Checkout SessionMagento 2 - 在结帐会话中通过送货地址获取客户地址 ID
【发布时间】:2019-02-15 10:34:08
【问题描述】:

我在获取客户地址 ID 时遇到问题,因为它返回一个空值。

这是我尝试过的:

$checkout = $this->_sessionCheckout->getQuote();
if ($checkout) {
   $shippingAddress = $checkout->getShippingAddress();
   if ($shippingAddress) {
       $addressId = $shippingAddress->getCustomerAddressId();
       $this->_logger->log(100, print_r('address Id: ' . $addressId , true)); //Returns null 
       /** @var \Magento\Customer\Api\Data\AddressInterface $address */
       $address = $this->_addressRepository->getById($addressId);
       $address->setCity($city_name);
       $this->_addressRepository->save($address);
}

我只需要获取客户地址 ID 即可更新城市。我不知道为什么它返回一个空值。

提前谢谢你。


编辑细节:

下图显示了保存的送货地址:

shipping-addresses

我想知道的是如何知道每个送货地址的客户地址 ID。所以我可以修改任何我想要的细节。

【问题讨论】:

    标签: magento2 shipping street-address magento2.2 customer


    【解决方案1】:

    当您作为访客用户下订单时,您必须在结帐页面上添加送货地址,那时不会有客户引用对象,因此您将客户地址 Id 的值设为空。

    当您作为注册客户下订单时,您应该有默认的送货地址,然后您才能获得客户地址ID的值。

    发生这种情况是因为customer_address_id 是对customer_address 表的引用,而customer_address 表是对customer_entity 表的引用。

    【讨论】:

    • 您好,感谢您提供的信息。但我的问题是,对于注册客户,我仍然将客户地址 ID 设为空。
    • 您知道其他获取注册客户的 customer_address_id 的方法吗?
    • 您可以在结帐页面获取注册的 customer_address_id,而不是在购物车页面。你检查过吗?
    • 是的。因此,当我执行以下操作时: $addressId = $this->_sessionCheckout->getQuote()->getShippingAddress()->getCustomerAddressId(); $addressId 返回空值
    • 您是否在“我的帐户”部分添加了默认送货地址?
    【解决方案2】:

    您可以通过以下方式获取订单 无论您想在何处调用此信息,如果尚未使用,请在构造函数中添加以下内容。

    protected $checkoutSession;
    public function __construct(
            \Magento\Checkout\Model\Session $checkoutSession,
            \Psr\Log\LoggerInterface $logger
        )
        {
    
            $this->checkoutSession = $checkoutSession;
            $this->logger = $logger;
        }
    
    
        $order = $session->getLastRealOrder();
        $orderdata = $order->getData();
        $shipping_address_id = $orderdata['shipping_address_ID'];
    

    此地址是付款时选择的最终送货地址 结帐过程的阶段。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-30
      • 2021-10-10
      • 2019-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-28
      • 1970-01-01
      相关资源
      最近更新 更多