La question que j'ai essayé de savoir était de savoir comment définir une limite pour une collection. Les réponses que j'ai trouvées sur Google n'étaient disponibles que pour le catalogue avec une setPage ($ pageNum, $ pageSize). Cela n'a fonctionné sur aucune autre collection.
Voir la réponse ci-dessous.
Il y a plusieurs moyens de le faire:
$collection = Mage::getModel('...')
->getCollection()
->setPageSize(20)
->setCurPage(1);
Obtiendra les 20 premiers enregistrements.
Voici l'alternative et peut-être plus lisible:
$collection = Mage::getModel('...')->getCollection();
$collection->getSelect()->limit(20);
Ceci appellera la limite Zend Db. Vous pouvez définir le décalage comme second paramètre.
Pour ce faire, il fallait regarder le code dans code/core/Mage/Catalog/Model/Resource/Category/Flat/Collection.php
À la ligne 380 dans Magento 1.7.2 sur la fonction setPage($pageNum, $pageSize)
$collection = Mage::getModel('model')
->getCollection()
->setCurPage(2) // 2nd page
->setPageSize(10); // 10 elements per pages
J'espère que cela aidera quelqu'un.
Limite de collecte des commandes:
$orderCollection = Mage::getResourceModel('sales/order_collection');
$orderCollection->getSelect()->limit(10);
$orderModel = Mage::getModel('sales/order');
foreach ($orderCollection->getItems() as $order) :
$order = $orderModel->load($order['entity_id']);
echo $order->getId().'<br>';
endforeach;
Vous pouvez également implémenter ceci: - setPage (1, n); où, n = un nombre quelconque.
$products = Mage::getResourceModel('catalog/product_collection')
->addAttributeToSelect('*')
->addAttributeToSelect(array('name', 'price', 'small_image'))
->addFieldToFilter('visibility', Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH) //visible only catalog & searchable product
->addAttributeToFilter('status', 1) // enabled
->setStoreId($storeId)
->setOrder('created_at', 'desc')
->setPage(1, 6);