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();
Pankaj Sharma
la source

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(); 
Amit Bera
la source
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