php - 从数据库加载多个对象

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

所以..我真的必须加载每个产品吗,这可能会导致 超过 3000 个查询,并且需要几个分钟?

最佳答案

你应该这样做:

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

然后做

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

关于php - 从数据库加载多个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9079356/

相关文章:

javascript - 如何在js文件中使用php文件中的变量?

javascript - 动态向 Laravel 表单添加字段

javascript - 在 Magento 中使用 AJAX 调用 PHP 文件

model-view-controller - 我在哪里可以在 magento 中声明我的自定义函数

PHP 总是返回空值

php - 在 PHP 中支持 IMAP IDLE

php - : mysql: command not found PHP exec() macOS

php - Magento 可配置产品在多商店网站的前端缺货

magento - 如何在magento的管理员中以网格形式更改后退按钮的网址?

php - Magento - 无法重新索引产品价格 - 外键约束失败