What is the best way to load Customer by Id? using customer interface or customer factory or another way ?
In most of solutions I found, it is done by directly using objectManager
(which should be never be used).
1 Answer
It's always a better practice to use service contracts.
In your case I would use \Magento\Customer\Api\CustomerRepositoryInterface
:
protected $_customerRepositoryInterface;
public function __construct(
....
\Magento\Customer\Api\CustomerRepositoryInterface $customerRepositoryInterface,
....
) {
....
$this->_customerRepositoryInterface = $customerRepositoryInterface;
}
Then in your code you can call:
$customerId = 1;
$customer = $this->_customerRepositoryInterface->getById($customerId);
-
4not working ... i have keep it in helper/data.php and call this method in phtml file but not working. Jun 21, 2018 at 9:05
-
-
It does work, but you can't retrieve information like firstname with
$customer->getData('firstname');
it only works with$customer->getFirstname();
which is confusing. You can find all methods here: vendor\magento\module-customer\Api\Data\CustomerInterface.php– BlackApr 26, 2021 at 10:50