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');

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);

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);

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

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);

1

Sortieren nach :

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

1

Sie können den folgenden Code verwenden.

$giftColletion = $this->_giftFactory->getCollection();
$giftColletion->addFieldToFilter('store_id', 1)->setPageSize($limit)->setCurPage($criteria)->setOrder('position','ASC');
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.