Magento 2 Получить данные клиента из заказа по электронной почте

Я создал наблюдателя для события: sales_order_place_after

Я могу получить данные клиента из customerId

<?php
namespace MyCompany\MyModule\Observer\Sales\Order;

use Magento\Framework\Event\ObserverInterface;

class Salesrep implements ObserverInterface
{
public function __construct(
\Magento\Customer\Api\CustomerRepositoryInterface $customerRepositoryInterface
){
$this->_customerRepositoryInterface = $customerRepositoryInterface;
}

public function execute(\Magento\Framework\Event\Observer $observer)
{
$order = $observer->getEvent()->getOrder();
$customer = $this->_customerRepositoryInterface->getById($order->getCustomerId());

$salesrep = $customer->getCustomAttribute('salesrep')->getValue();
$order->setSalesrep($salesrep);
}
}

В случае, если клиент заказывает в качестве гостя, как я могу получить информацию о клиенте по электронной почте?

Я также пытался

$customer = $this->_customerRepositoryInterface->getByEmail($order->getCustomerEmail());

но это возвращает ошибку.

0

Решение

Вскоре после публикации этого вопроса я смог разобраться.

Просто нужно изменить эту строку

$customer = $this->_customerRepositoryInterface->getById($order->getCustomerId());

к

$customer = $this->_customerRepositoryInterface->get($order->getCustomerEmail(), $websiteId = null);

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]