Magento 2: Ordre de tri et limitation de la collection de produits


16

J'ai besoin de trier la collection de produits par ordre d'ID DESC et d'ajouter une limite à la collection de produits. Voici mon code:

$objectManager     = \Magento\Framework\App\ObjectManager::getInstance();
$productCollection = $objectManager->create('Magento\Catalog\Model\ResourceModel\Product\CollectionFactory');
$collection        = $productCollection->create()
    ->addAttributeToSelect('*')
    ->load();

Réponses:


31

Ajoutez simplement ce code addAttributeToSort('entity_id', 'desc')à votre collection.

Comme le produit suit la structure de l'EAV, vous pouvez utiliser addAttributeToSort('attribute_code', 'sort_order')

Pour limiter l'utilisation setPageSize()et les setCurPage()méthodes d' une collection :

$collection = $productCollection->create()
    ->addAttributeToSelect('*');

$collection 
    ->setPageSize(10) // only get 10 products 
    ->setCurPage(1)  // first page (means limit 0,10)
    ->load(); 

1
Vous n'avez pas répondu à la partie limite.
Hashid

@Hashid a mis à jour la réponse.
Roman Snitko

Génial! Cela a également résolu un problème lors de la présence de 2 blocs de collection sur une page, l'un d'entre eux de pagination, ce qui a cassé l'autre collection qui n'était pas censée être paginée. Le « setCurPage » sur ce dernier fixe ce 🥳
00 BBB

setPageSize ne fonctionne pas pour moi
Sagar Parikh SGR
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.