Ben Lessani ile , core/iterator
büyük koleksiyonları mümkünse her defasında bir satır yüklemek için kaynak modelini kullanmanız gerektiğini kabul ediyorum .
Ancak, sınırlamalar vardır. " AddAttributeToSelect, core / resource_iterator ile çalışmıyor mu? " Bölümünde açıklandığı gibi , özellik değerleri tablolarından değerler eklemeniz gerekirse, EAV modelleriyle iyi çalışmaz.
Ve StackOverflow'un bağlantılı örneği aslında o kadar iyi değil çünkü aynı sorguyu farklı LIMIT
ifadelerle tekrarlıyor . Karmaşık sorgular için bu bir performans sorunu olabilir, ancak daha da önemlisi, aralarına yeni satırlar eklenirse çoğaltmalar elde edersiniz.
Parçalardaki koleksiyonları işlemek için daha iyi bir yol ilk önce tüm kimlikleri yüklemek, ardından bu kimlikleri gerçek sayfalanmış toplama için bir filtre olarak kullanmaktır.
Ürünler için basit örnek:
$ids = Mage::getModel('catalog/product')
->getCollection()
->getAllIds();
$page = 1;
do {
$collection = Mage::getModel('catalog/product')
->getCollection()
->addIdFilter($ids)
->setPageSize(100)
->setCurPage($page);
$results = $collection->load();
// do stuff ......
$page++;
} while ($results->count());