已完成从数据库加载多个对象


Loading multiple objects complete from database

我有几千个..的动态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多个查询,并且需要几分钟时间?

您应该执行以下操作:

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

然后做

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