I am trying to get order,customer,product details in observer. I am using event sales_order_save_after.
<?php
namespace Gworks\Sms\Model\Observer;
use Magento\Framework\Event\ObserverInterface;
class AfterPlaceOrderObserver implements ObserverInterface
{
protected $_logger;
public function __construct(
\Psr\Log\LoggerInterface $logger, //log injection
array $data = []
) {
$this->_logger = $logger;
// parent::__construct($data);
}
public function execute(\Magento\Framework\Event\Observer $observer)
{
//order id
$order = $observer->getEvent()->getOrder();
$order_id = $order->getIncrementId();
$this->_logger->info($order_id);
//product id and name
foreach($order->getAllItems() as $item)
{
$ProdustIds[]= $item->getProductId();
$proName[] = $item->getName(); // product name
}
foreach($proName as $name)
{
$this->_logger->info($name);
}
foreach($ProdustIds as $id)
{
$this->_logger->info($id);
}
//customer id
$customerid = $order->getCustomerId();
$this->_logger->info($customerid);
//customer name
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$customer = $objectManager->create('Magento\Customer\Model\Customer')->load($customer);
$name=$customer->getName();
$this->_logger->info($name);
}
}
I need to get below details.
- customer name
- phone number
- ordered product name
- shipping address
I have to collect customer name and product name in system.log but I stuck with get shipping address and phone number in log.
Best Answer
You can't get product id like this
$observer->getEvent()->getProduct()->getId();
This is order event not product event
And for phone number you can get from shipping address or using customer id