magento 2: Comment utiliser la clause order by et limit dans la requête SQL


9

J'utilise le code suivant pour filtrer le résultat et je veux limiter le résultat.

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

Avez-vous essayé ce $ giftColletion-> setPageSize (3)
Magento 2

Je vais l'essayer, cela me donnera 3 enregistrements, non?
Nitin Pawar

Oui, vous devez définir le nombre
Magento 2

Réponses:


8

Vous pouvez utiliser setPageSize () pour utiliser la limite dans la collection

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

Vous pouvez changer ici 10 à votre limite dans le champ setpagesize. s'il vous plaît laissez-moi savoir si vous avez un problème
Rakesh Jesadiya

comment puis-je définir l'ordre pour deux champs de données comme la position et le salaire.
Nitin Pawar

vous pouvez utiliser deux fois setOrder ()
Rakesh Jesadiya

vous pouvez également essayer avec $ giftCollection-> setOrder (array ('position', 'salaire'), asc) si les deux sont dans l'ordre asc. Ci-dessus est utilisé pour un ordre de tri différent.
Rakesh Jesadiya

1
HIIII ITS fonctionne maintenant = >>> $ collection-> getSelect () -> ayant ('distance <'. $ Redious) -> order ('distance ASC') -> limit ($ pageSize, $ page);
Birjitsinh Zala

2

En utilisant la taille de la page, vous pouvez définir une limite:

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

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

2

J'utilise normalement les éléments suivants, mais setPageSize()est également valide:

$collection->getSelect()->limit($limit);

En ce qui concerne le tri, si la direction de votre tri est la même pour tous les champs, vous pouvez définir cela en un seul appel à l'aide d'un tableau:

$collection->setOrder([$field1, $field2, ...], $dir);

1

Commandé par :

$giftColletion->setOrder('position','ASC');
$giftColletion->setOrder('store_id','ASC');

1

Vous pouvez utiliser le code ci-dessous.

$giftColletion = $this->_giftFactory->getCollection();
$giftColletion->addFieldToFilter('store_id', 1)->setPageSize($limit)->setCurPage($criteria)->setOrder('position','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.