La question que j'ai essayé de trouver était de savoir comment définir une limite sur une collection, les réponses que j'ai trouvées sur Google étaient uniquement disponibles pour le catalogue avec un setPage ($ pageNum, $ pageSize). Cela n'a pas fonctionné sur d'autres collections.
Voir la réponse ci-dessous.Magento: Définir LIMIT sur la collection
Répondre
Il y a plusieurs façons de le faire:
$collection = Mage::getModel('...')
->getCollection()
->setPageSize(20)
->setCurPage(1);
obtiendrai 20 premiers dossiers.
Voici la alternative et peut-être plus lisible:
$collection = Mage::getModel('...')->getCollection();
$collection->getSelect()->limit(20);
Ceci appellera limite Zend Db. Vous pouvez définir le décalage en tant que deuxième paramètre.
La façon de faire était à la recherche du code 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.
ou juste '$ collection-> setPage (pageNum $, $ pageSize)' –
+ Pavel ne setPage est seulement pour le catalogue et moi avions besoin en dehors du catalogue comme je l'ai expliqué dans la question. – Shadowbob
Collection ordre limite:
$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;
wow ... allez-y ... –
Votre exemple fonctionne, mais n'utilisez jamais un foreach pour charger des entités uniques à partir d'une collection. Voilà à quoi sert une collection! Tellement mieux enlever les deux premières lignes dans votre foreach ... cela fonctionnera juste mais est beaucoup plus rapide et plus évolutif! –
hmm! interroger dans une boucle – itsazzad
Vous pouvez implémenter cela aussi: - setPage (1, n); où, n = n'importe quel nombre.
$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. Définir LIMIT avec doctrine 2?
- 2. Magento Collection Filter
- 3. magento collection de produits
- 4. Collection Magento Catch-22
- 5. Rapport Magento avis Collection
- 6. Magento Generic Collection
- 7. Filtrer une collection Magento
- 8. Collection de produits en couches Magento sur la page CMS
- 9. Magento - Varien Grid - Totaliser la collection complète
- 10. Comment filtrer Magento Loaded Collection?
- 11. Magento Collection de produits Limiter via XML
- 12. sort Magento collection AFTER load
- 13. Magento comprehension Collection de produits
- 14. MySQL LIMIT sur l'instruction DELETE
- 15. Magento: par programmation définir la livraison gratuite
- 16. Magento Collection Joindre entre différents modules
- 17. DevC++ (Mingw) Stack Limit
- 18. Magento: Get collection de requête personnalisée
- 19. Magento - Meilleure façon d'annuler une collection
- 20. Magento Collection charge à l'aide Trier par
- 21. Trier Magento Collection Produit par catégorie
- 22. Magento Group par 'nom' dans la collection de produits
- 23. Magento obtenir l'ordre numérique des produits dans la collection
- 24. mongodb $ in limit
- 25. collection de requêtes SQL dans Magento
- 26. JavaFX TextArea Limit
- 27. Magento Collection incorrecte compter avec des filtres
- 28. Vue de grille Magento en utilisant la collection personnalisée
- 29. Magento - Collection vide si la catégorie ancre n'est pas définie
- 30. collection Magento - filtre par plusieurs champs
limite est seulement pour le catalogue aussi, si vous faites votre propre module, vous devrez implémenter cela dans votre collection, et 'limite (20) = LIMIT 0, 20' et pas 'LIMIT 20, 20' comment changer la page ? La première solution est celle que je mets ci-dessous. – Shadowbob
$ collection-> getSelect() -> limite (20, 20); // LIMIT 20, 20 OU $ collection = Mage :: getModel ('...') -> getCollection() -> setPageSize (20) -> setCurPage (2); // LIMIT 20, 20 – freento
$ collection-> getSelect() -> limit (20, 20); travaillera pour chaque collection. Voir Zend DB Select, sur lequel sont basées les requêtes Magento vers DB. – freento