magento 2: Verwendung der Klausel order by and limit in der SQL-Abfrage

9

Ich verwende folgenden Code, um das Ergebnis zu filtern, und ich möchte das Ergebnis begrenzen.

$giftColletion = $this->_giftFactory->getCollection();
$giftColletion->addFieldToFilter('store_id', 1);
$giftColletion->setOrder('position','ASC');
Nitin Pawar
quelle
Haben Sie diese $ giftColletion-> setPageSize (3)
Magento 2
Werde es versuchen, es wird mir 3 Rekorde bringen, oder?
Nitin Pawar
Ja, Sie müssen die Anzahl einstellen
Magento 2

Antworten:

8

Sie können setPageSize () verwenden, um limit in collection zu verwenden

$giftColletion = $this->_giftFactory->getCollection();
$giftColletion->addFieldToFilter('store_id', 1);
$giftColletion->setOrder('position','ASC');
$giftColletion->setOrder('salary','ASC');
$giftColletion->setPageSize(10);
Rakesh Jesadiya
quelle
Sie können hier 10 bis zu Ihrem Limit im Feld setpagesize ändern. Bitte lassen Sie mich wissen, wenn Sie ein Problem haben
Rakesh Jesadiya
Wie kann ich die Reihenfolge für zwei Datenfelder wie Position und Gehalt festlegen?
Nitin Pawar
Sie können zweimal setOrder ()
Rakesh Jesadiya
Sie können es auch mit $ giftCollection-> setOrder (Array ('Position', 'Gehalt'), Asc) versuchen, wenn beide in aufsteigender Reihenfolge sind. Oben wird für verschiedene Sortierreihenfolgen verwendet.
Rakesh Jesadiya
1
HIIII ITS funktioniert jetzt = >>> $ collection-> getSelect () -> mit ('distance <'. $ Redious) -> order ('distance ASC') -> limit ($ pageSize, $ page);
Birjitsinh Zala
2

Mit der Seitengröße können Sie ein Limit festlegen:

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

Normalerweise verwende ich Folgendes, setPageSize()ist aber auch gültig:

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

Wenn beim Sortieren die Sortierrichtung für alle Felder gleich ist, können Sie dies in nur einem Aufruf mithilfe eines Arrays festlegen:

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

Sortieren nach :

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

Sie können den folgenden Code verwenden.

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