我不知道我是否在問這個問題。我需要加載一個產品,改變一些值並保存。我的問題是哪一種方式是適當做it.Currently我使用這種方式:在magento中加載模型更好嗎?
$id = Mage::getModel('catalog/product')->getIdBySku($sku);
$product = Mage::getModel('catalog/product')->load($id);
1)一般情況下能正常工作,即使40K products.But我讀了這種方式導致內存泄漏?我也讀過這個解決方案,如果我禁用reindex功能,我可以改善處理時間。
2)如果我使用另一種方式並加載它作爲一個集合,然後應用一些過濾器,例如addFieldToFilter('sku',$the_product_i_want)
會更好?
當我說得更好時,我的意思是:1)magento的方式,2)有效率的時間3)沒有做我不需要做的事情。
我想說你似乎在混合的概念。 addFieldToFilter - 關於集合。 Mage :: getModel('catalog/product') - > load() - 與模型有關。我認爲你的問題的「正確」形式是 - 什麼是最好的:1)首先從db加載所有產品,然後通過php過濾需要處理的內容2)通過mysql過濾所需產品(這是addFieldToFilter做的),然後更新所有加載的產品,然後答案是第二選項。 –
如果我這樣做:Mage :: getModel('catalog/product') - > load()我加載所有產品?因爲我打電話給模型產品?即使我使用id加載一個產品?對我的問題抱歉但我想更好地理解Magento。 @羅布 – vbak
啊,明白了。那麼,model-> load()是加載模型的方法。 「模型」概念大致上就像數據結構的單個實例一樣。即product是數據結構,當你調用 - > load($ id)時,通過給定的$ id從db中獲取數據來填充該結構。雖然addFieldToFilter適用於集合,但不適用於模型。集合概念 - 是一組產品,通過一次請求從DB獲取(大多數情況下,通常集合是抽象的,意味着一組單一實例)。所以,當你做 - > addFieldToFilter,你添加條件到你的集合的請求 –