ใน Magento 1.x ฉันทำได้
if(Mage::getModel('catalog/product')->getIdBySku($sku))
ฉันจะตรวจสอบเรื่องนี้ใน Magento 2 ได้อย่างไร
ใน Magento 1.x ฉันทำได้
if(Mage::getModel('catalog/product')->getIdBySku($sku))
ฉันจะตรวจสอบเรื่องนี้ใน Magento 2 ได้อย่างไร
คำตอบ:
ลอง { { $ product = $ productRepository-> get ($ sku);= $ productRepository -> get ( $ sku ); } catch (\ Magento \ Framework \ Exception \ NoSuchEntityException $ e) {} catch ( \ Magento \ Framework \ Exception \ NoSuchEntityException $ e ) { $ product = false;= false ; }}
ลองสิ่งนี้:
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$product = $objectManager->get('Magento\Catalog\Model\Product');
if($product->getIdBySku($sku)) {
echo 'exit';
}
หรือ
protected $product;
public function __construct(
\Magento\Catalog\Model\Product $product
) {
$this->_product = $product;
}
และหลังจากตรวจสอบ
if($this->_product->getIdBySku($sku)) {
echo 'exit';
}
ดู @bpoiss คำตอบคำตอบของฉันคือเพิ่มเติมเกี่ยวกับวิธีรับผลิตภัณฑ์โดยใช้ sku
คุณสามารถใช้Magento\Catalog\Model\ProductRepository
คลาสได้
ก่อนอื่นให้ฉีดเข้าไปใน Constructor ของคุณ:
protected $_productRepository;
public function __construct(/* your original parameters here */, \Magento\Catalog\Model\ProductRepository $productRepository)
{
/* your original code here */
$this->_productRepository = $productRepository;
/* end of your original code */
}
จากนั้นในฟังก์ชั่นของคุณคุณสามารถทำได้:
$this->_productRepository->get($sku);
เพิ่งค้นพบว่าวิธีการที่ยังคงอยู่ในgetIdBySku
\Magento\Catalog\Model\Product
ฉีดมันเข้าไปด้วย
public function __construct(
\Magento\Catalog\Model\Product $productModel
) {
$this->productModel = $productModel;
}
และเกินกว่าที่คุณสามารถตรวจสอบได้
$this->productModel->getIdBySku($sku)
ฉันคิดว่าคุณสามารถ:
$checkProduct = $this->objectManager->create(
'Magento\Catalog\Model\Product'
);
if($checkProduct->getIdBySku()){
echo 'exist';
}
แต่มันไม่ใช่ฟังก์ชั่นมาตรฐาน