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');
Nitin Pawar
la source
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);
Rakesh Jesadiya
la source
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);
Ronak Chauhan
la source
2
$giftColletion = $this->_giftFactory->getCollection()->addFieldToFilter('store_id', 1);
$giftColletion->setOrder('position', 'ASC');
$giftColletion->setOrder('attribute_code', 'ASC'); 
$giftColletion->setPageSize($limitNo);
Ashish Jagnani
la source
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);
Jalogut
la source
1

Commandé par :

$giftColletion->setOrder('position','ASC');
$giftColletion->setOrder('store_id','ASC');
Ronak Chauhan
la source
1

Vous pouvez utiliser le code ci-dessous.

$giftColletion = $this->_giftFactory->getCollection();
$giftColletion->addFieldToFilter('store_id', 1)->setPageSize($limit)->setCurPage($criteria)->setOrder('position','ASC');
Dev
la source