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?

Lachezar Raychev
la source

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

ND17
la source
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.

Zankar
la source