web-dev-qa-db-fra.com

Magento: Définir LIMIT sur la collection

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.

37
Shadowbob

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.

118
freento

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.

11
Shadowbob

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; 
4
Israt Jahan Simu

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);
1
Vishal Thakur