製品コレクションを反復する最良の方法
-
22-10-2019 - |
質問
これらの方法のどれが」より簡単に「Magentoプラットフォームでは、具体的にはデータベース?方法1では、データベースへの単一の呼び出しを使用してコレクションを取得し、結果を反復します。メソッド2は、各実行のループ内の製品を取得します。
方法1
$products = Mage::getResourceModel('catalog/product_collection')
->addAttributeToSelect('*') // <- obv a bad idea
->addAttributeToFilter(
'sku', array('in' => $productSkus)
)
->load();
foreach ($products as $product) {
echo $product->getName();
}
製品オブジェクトをループ内で取得することと
方法2
$products = Mage::getModel('catalog/product');
foreach ($array as $key => value) {
$product = $products->load('PROD001', 'sku');
}
明らかに、このコードはサンプルにすぎません。データセットを考慮すると、数百または数千の製品が含まれている可能性があります。右「道、または私が足りない別のものはありますか?
解決
方法1では、ループするのにはるかに短い時間がかかりますが、多くのメモリを消費します。
おそらくあなたが探している別のオプションは、以下を使用することです。
Mage::getSingleton('core/resource_iterator')
これは、それを次のように説明しています。 ネイティブにページネーションでマゼントコレクションを反復することは可能ですか?
Kalen Jordanのバッチイテレーターに注意を払ってくださいhttps://gist.github.com/kalenjordan/5483065
これは、非常に大きなデータセットをエレガントに達成するために使用できます。
所属していません magento.stackexchange