m2根据产品id或者sku获取产品(get product by id or sku)

2.53K 浏览开发笔记

m2根据产品id或者sku获取产品(get product by id or sku)

一,根据产品id获取产品对象

方式1:用构造函数获取

private $productFactory;  
public function __construct(
    MagentoCatalogModelProductFactory $productFactory
) {    
    $this->productFactory = $productFactory;
} 

public function getProductById($id){
    $product = $this->productFactory->create(); 
    return $product->load($id);
}

方式2: 用对象管理器获取

public function getProductById($id){
    $object_manager = MagentoFrameworkAppObjectManager::getInstance();
    return $object_manager->get('MagentoCatalogModelProductFactory')->create()->get($id);
}

二,根据产品sku获取产品对象

方式1:用构造函数获取

private $productRepository;  
public function __construct(    
    MagentoCatalogApiProductRepositoryInterface $productRepository    ...
) {    
    $this->productRepository = $productRepository;    ...
} 

public function getProductBySku($sku){    
    return $this->productRepository->get($sku);
}

方式2: 用对象管理器获取

public function getProductBySku($sku){
    $object_manager = MagentoFrameworkAppObjectManager::getInstance();
    return $object_manager->get('MagentoCatalogApiProductRepositoryInterface')->get($sku);
}

这里用MagentoCatalogModelProductFactory模型获取也可以,首先需要根据sku查到id

public function getProductBySku($sku){
    $object_manager = MagentoFrameworkAppObjectManager::getInstance();
    $product = $object_manager->get('MagentoCatalogModelProductFactory')->create();
    $product->load($product->getIdBySku($sku));
}

根据MagentoCatalogModelProductFactory模型获取是速度最快效率最高的,也是最推荐的。

1
【腾讯云】境外1核2G服务器低至2折,半价续费券限量免费领取!
【腾讯云】618采购季来袭!爆款云服务器18元起,参与活动享多重好礼
Speed Up Your Magento Store by 300%