質問

これらの方法のどれが」より簡単に「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

これは、非常に大きなデータセットをエレガントに達成するために使用できます。

ライセンス: CC-BY-SA帰属
所属していません magento.stackexchange
scroll top