magento 2: Jak używać klauzuli order by i limit w zapytaniu sql

9

Używam następującego kodu do filtrowania wyników i chcę ograniczyć wynik.

$giftColletion = $this->_giftFactory->getCollection();
$giftColletion->addFieldToFilter('store_id', 1);
$giftColletion->setOrder('position','ASC');
Nitin Pawar
źródło
Czy próbowałeś tego $ giftColletion-> setPageSize (3)
Magento 2
Spróbuję, To przyniesie mi 3 rekordy, prawda?
Nitin Pawar,
Tak, musisz ustawić liczbę
Magento 2

Odpowiedzi:

8

Możesz użyć setPageSize (), aby użyć limitu w kolekcji

$giftColletion = $this->_giftFactory->getCollection();
$giftColletion->addFieldToFilter('store_id', 1);
$giftColletion->setOrder('position','ASC');
$giftColletion->setOrder('salary','ASC');
$giftColletion->setPageSize(10);
Rakesh Jesadiya
źródło
Możesz zmienić tutaj 10 na swój limit w polu setpagesize. daj mi znać, jeśli masz jakiś problem
Rakesh Jesadiya
jak mogę ustawić kolejność dwóch pól danych, takich jak pozycja i wynagrodzenie.
Nitin Pawar,
możesz użyć dwa razy setOrder ()
Rakesh Jesadiya
możesz także spróbować z $ giftCollection-> setOrder (tablica („pozycja”, „wynagrodzenie”), asc), jeśli oba są w porządku rosnącym. Powyższe służy do innej kolejności sortowania.
Rakesh Jesadiya
1
HIIII ITS już działa = >>> $ collection-> getSelect () -> mając ('odległość <'. $ Redious) -> zamówienie ('odległość ASC') -> limit ($ pageSize, $ page);
Birjitsinh Zala
2

Za pomocą rozmiaru strony możesz ustawić limit:

$giftColletion = $this->_giftFactory->getCollection();
    $giftColletion->addFieldToFilter('store_id', 1);
    $giftColletion->setOrder('position','ASC');
    $giftColletion->setPageSize($pageSize);
    $giftColletion->setCurPage($page);
Ronak Chauhan
źródło
2
$giftColletion = $this->_giftFactory->getCollection()->addFieldToFilter('store_id', 1);
$giftColletion->setOrder('position', 'ASC');
$giftColletion->setOrder('attribute_code', 'ASC'); 
$giftColletion->setPageSize($limitNo);
Ashish Jagnani
źródło
2

Zwykle używam następujących, ale setPageSize()jest również ważny:

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

Jeśli chodzi o sortowanie, jeśli kierunek sortowania jest taki sam dla wszystkich pól, możesz ustawić to w jednym wywołaniu za pomocą tablicy:

$collection->setOrder([$field1, $field2, ...], $dir);
Jalogut
źródło
1

Zamów przez :

$giftColletion->setOrder('position','ASC');
$giftColletion->setOrder('store_id','ASC');
Ronak Chauhan
źródło
1

Możesz użyć poniższego kodu.

$giftColletion = $this->_giftFactory->getCollection();
$giftColletion->addFieldToFilter('store_id', 1)->setPageSize($limit)->setCurPage($criteria)->setOrder('position','ASC');
Dev
źródło