Перевірте, чи існує продукт із скупою в Magento 2


9

У Magento 1.x я міг би зробити

if(Mage::getModel('catalog/product')->getIdBySku($sku))

Як я можу перевірити це в Magento 2?

Відповіді:


11
спробуйте { 
    $ product = $ productRepository -> get ( $ sku ); } catch ( \ Magento \ Framework \ Exception \ NoSuchEntityException $ e ) { 
    $ product = false ; } 
   

Це працює саме так, як я хотів.
TS Guhan

10

Спробуйте це:

$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';    
}

2
Я подумав, що ви не повинні використовувати objectManager безпосередньо
bpoiss

оновлено ans pls перевірити зараз
Abdul

2-а версія без менеджера об'єктів краще :)
Анна Вьоклл

1

Дивіться відповідь @bpoiss, моя відповідь детальніше про те, як отримати продукт за допомогою sku.

Для цього ви можете використовувати Magento\Catalog\Model\ProductRepositoryклас.

Спочатку введіть його у свій конструктор:

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);

1
Це не спрацювало для мене, тому що якщо sku є, я отримав екземпляр ProductInterface, а в іншому випадку рядок "Product не існує", що евалює до істини. Мені доведеться зробити додатковий перевірку екземпляра
bpoiss

@bpoiss так, моя правильна відповідь - це більше про те, як отримати товар з sku, ваша відповідь, безумовно, правильна;) Btw, ви можете поставити галочку "відповісти на моє запитання", коли ви створите нове запитання, щоб у вас було тільки одну форму для заповнення;)
Рафаель у Digital Pianism

дякую, що вказали на це, але в момент, коли я написав запитання, я не знав відповіді ^^
bpoiss

@bpoiss haha ​​ok ^^ як ваша відповідь була швидкою, я здогадався, ви це знаєте. ;)
Рафаель у Digital Pianism

0

Щойно з’ясували, що getIdBySkuметод все ще існує в \Magento\Catalog\Model\Product. Введіть його за допомогою

public function __construct(
    \Magento\Catalog\Model\Product $productModel
) {
    $this->productModel = $productModel;
}

і чим ви можете перевірити

$this->productModel->getIdBySku($sku)

0

Я думаю, що ти можеш:

$checkProduct = $this->objectManager->create(
                'Magento\Catalog\Model\Product'
            );
    if($checkProduct->getIdBySku()){
    echo 'exist';
    }

Але це не стандартна функція.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.