Magento验证产品是否存在

时间:2014-12-24 20:27:15

标签: php magento

有一种方法可以验证产品是否存在,或者产品ID是否由产品ID

创建

例如

$_prodId  = $this->getProduct()->getId();

    if (function_exists($_prodId)){

由于

3 个答案:

答案 0 :(得分:4)

发布的其他答案对资源非常强硬,更好的方法是对数据库进行简单查询,你可以用

来做到这一点
$sku = Mage::getResourceSingleton('catalog/product')->getProductsSku(array($_prodId));
if(!empty($sku)){
    //do your thang
}

这个函数用于在你拥有ID时获取sku,但是我们可以在这里使用它,如果产品不存在,它将返回一个空数组:

array(0) {
}

如果它退出,它将返回一个带有id和sku的数组

array(1) {
[0]=>
    array(2) {
       ["entity_id"]=>
        string(6) "185566"
       ["sku"]=>
        string(9) "ID-136308"
    }
}

我们甚至可以同时使用它来制作多种产品。

如果我们看一下核心方法的定义

   public function getProductsSku(array $productIds)
   {
       $select = $this->_getReadAdapter()->select()
           ->from($this->getTable('catalog/product'), array('entity_id', 'sku'))
           ->where('entity_id IN (?)', $productIds);
       return $this->_getReadAdapter()->fetchAll($select);
   }

非常简单,比装载产品型号轻得多;

答案 1 :(得分:2)

您可以使用此代码检查是否存在产品Sku。

将此类包含在您的构造函数中。

\Magento\Framework\Api\SearchCriteriaBuilder $searchCriteriaBuilder;
\Magento\Catalog\Model\ProductRepository $_productRepository

在需要条件的地方添加以下逻辑。

$productSku = "*Your_Product_Sku*";
$searchCriteria = $this->searchCriteriaBuilder->addFilter("sku", $productSku,'eq')->create();
$products = $this->_productRepository->getList($searchCriteria);
$Items = $products->getItems();

if (count($Items) == 0) {
    //your message here.
}

答案 2 :(得分:1)

您可以按照以下方式进行验证。

$_prodId  = $this->getProduct()->getId();
$_product = Mage::getModel('catalog/product')->load($_prodId);
if($_product)
{
  //product exists
}
else
{
 //product doesn't exist
}