检查产品ID在magento中是否有效的最佳方法是什么?

Lli*_*ian 1 php magento magento-1.7

对于后端模块,我需要检查产品ID是否有效,即:是否有具有该ID的产品?我找到了两个解决方案,但我对其中任何一个都不满意:

  1. Directy查询catalog_product_entity表.非常快,但绝对不是很优雅,我担心可能会有我不知道的问题.

  2. 使用以下代码:

    $product = Mage::getModel('catalog/product')->load($productID)
    if ($product->getId()) {
      //valid id
    }
    else {
      //not a valid id
    }
    
    Run Code Online (Sandbox Code Playgroud)

    这应该有效但速度很慢,因为我必须一次检查几个ID.由于我不需要实际的产品数据,因此加载它并没有多大意义.

有更好的建议吗?

ben*_*rks 5

$productIds = array(16,17,18,19,290993,25    /*...*/);

$collection = Mage::getResourceModel('catalog/product_collection');
$collection->addFieldToFilter('entity_id',array('in'=>$productIds))->load();

$foundIds = array_intersect($productIds,array_keys($collection->toArray()));

var_dump($foundIds); /* each array value should be a valid ID */
Run Code Online (Sandbox Code Playgroud)