从数据库中加载多个对象

时间:2012-01-31 12:14:40

标签: php magento

我有几千个动态ID ..让我们说产品。 现在我想加载这些产品而不向数据库发送超过一千个查询。 所以这不是解决方案:

$products = array();
foreach( $ids as $id ){
 $products[] = Mage::getModel('catalog/product')->load($id);
}

但是因为我需要完整的产品,所以这也不是解决方案:

$products = Mage::getModel('catalog/product')->getCollection();
$products->addFieldToFilter( 'entity_id', array( 'in', $ids ) );

那么......我真的每个单品都需要load,这可能会导致超过3000次查询并花费几分钟时间吗?< / p>

1 个答案:

答案 0 :(得分:2)

您应该执行以下操作:

$products = Mage::getModel('catalog/product')->getCollection();
foreach (<product attributes> as <attribute code>) {
    $products->addAttributeToSelect(<attribute code>);
}

然后再做

$products->addFieldToFilter( 'entity_id', array( 'in', $ids ) );