在magento中加载模型哪种方式更好?

时间:2013-11-03 17:05:38

标签: magento collections magento-1.7

我不知道我是否正确。我需要加载产品,更改一些值并保存。我的问题是哪种方式适合这样做。目前我正在使用这种方式:

$id = Mage::getModel('catalog/product')->getIdBySku($sku);
$product = Mage::getModel('catalog/product')->load($id);

1)一般来说,即使使用40K产品也能正常工作。但是我读到这种方式导致内存泄漏?同样对于该解决方案,我读到如果我禁用reindex功能,我可以改善处理时间。

2)如果我使用其他方式并将其作为集合加载,然后应用一些过滤器,请addFieldToFilter('sku',$the_product_i_want) 会更好吗?

当我说得更好时,我的意思是:1)magento方式,2)时间效率3)不做我不需要做的事情。

1 个答案:

答案 0 :(得分:3)

每次调用以下代码片段Mage::getModel('catalog/product')时,Magento都会在内存中创建一个新的模型对象。这将导致内存泄漏。你可以这样做。

$model = Mage::getModel('catalog/product');
$id = $model->getIdBySku($sku);
$product = $model->load($id);

同时if you have the product object您可以使用以下代码。

$collection = Mage::getModel('catalog/product')->getCollection();
$product = $collection->addFieldToFilter('sku',$the_product_i_want);