Magento2 Order by clause dans la collection


13

J'ai une collection personnalisée à laquelle j'ajoute des filtres. Par exemple, j'ai ceci:

$giftColletion = $this->_giftFactory->getCollection();
$giftColletion->addFieldToFilter('store_id', 1);

Quel filtre dois-je ajouter à $ giftColletion pour qu'il puisse renvoyer tous les enregistrements par position de champ dans l'ordre ASC?

Réponses:


36

Vous pouvez essayer ceci

$giftColletion = $this->_giftFactory->getCollection();
$giftColletion->addFieldToFilter('store_id', 1);
$giftColletion->setOrder('position','ASC');

setOrder est utilisé pour le tri


2

Selon \Magento\Catalog\Model\ResourceModel\Product\Collectionvous, vous pouvez utiliser une addAttributeToSort()méthode pour trier votre collection.

Cela a fonctionné pour moi:

$ collection = $ this -> _ collection
    -> créer ()
    -> addAttributeToSelect (['sku', 'name', 'image'])
    -> addCategoryFilter ($ category)
    -> addAttributeToSort ('nom')
    -> setPageSize ($ limit);
return $ collection;

Utilisez n'importe quel attribut dont vous avez besoin de trier votre collection au lieu de 'name'dans mon exemple. Vous pouvez également spécifier la direction de l'ordre comme deuxième paramètre, il est par défaut ASC.

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.