Попри те, що Magento 2 — це дуже гнучка та легка в керуванні платформа електронної комерції, керувати онлайн-магазином іноді може бути досить складно. Так само, як отримання даних про замовлення за increment ID, отримання продуктів за ID, безумовно, є важливим вмінням.
Оскільки це одна з найпоширеніших операцій, які трапляються під час роботи з Magento, ви повинні знати, як її виконувати. Існує кілька можливих способів, і в цій статті ви дізнаєтесь, як використовувати кожен із них.
Зміст [приховати]
Отримайте продукт за ID використовуючи factory method
Найпоширенішим способом отримання продукту за ID у Magento 2 є застосування factory method. Для цього використайте такий код:
protected $_productFactory;
public function __construct(
\Magento\Catalog\Model\ProductFactory $productFactory
) {
$this->_productFactory = $productFactory;
}
Після цього, отримайте продукт за ID, виконавши таку команду:
$product = $this->_productFactory->create()->load($id);
Отримайте продукт за ID використовуючи API repository
API repository — це ще один метод, який ви можете обрати. Використайте такий код, щоб отримати об'єкти продукту:
protected $_productRepository;
public function __construct(
\Magento\Catalog\Api\ProductRepositoryInterface $productRepository
) {
$this->_productRepository = $productRepository;
}
Після цього виконайте описану нижче команду та отримайте продукт за ID:
$product = $this->_productRepository->getById($id);
Отримайте продукт за ID використовуючи object manager
Зрештою, object manager також дає змогу отримати продукт за ID у Magento. Ви, мабуть, знаєте, що це досить складний спосіб. Проте описаний нижче код допоможе вам отримати продукти за ID:
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$product = $objectManager->get('Magento\Catalog\Model\Product')->load($product_id);
Примітка: рекомендуємо уникати прямого використання методу object manager, оскільки він приховує справжні залежності класу.
Ось і все! Кожен із методів призначений для оптимізації процесу розробки. Просто оберіть той, який найкраще відповідає вашим вимогам.
Після того, як ви навчитеся отримувати продукт за ID, ви можете ще більше заглибитися у цю тему та дізнатися, як отримати колекцію продуктів за ID категорії в Magento. Це теж може стати в нагоді.