magento 2: Come utilizzare la clausola order by e limit nella query sql


9

Sto usando il seguente codice per filtrare il risultato e voglio limitare il risultato.

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

Hai provato questo $ giftColletion-> setPageSize (3)
Magento 2

Ci proverò, mi daranno 3 record, giusto?
Nitin Pawar,

Sì, devi impostare il conteggio
Magento 2

Risposte:


8

È possibile utilizzare setPageSize () per utilizzare il limite nella raccolta

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

Puoi cambiare qui 10 al tuo limite nel campo setpagesize. per favore fatemi sapere se avete qualche problema
Rakesh Jesadiya,

come posso impostare l'ordine per due campi di dati come posizione e stipendio.
Nitin Pawar,

puoi usare due volte setOrder ()
Rakesh Jesadiya il

puoi anche provare con $ giftCollection-> setOrder (array ('position', 'salary'), asc) se entrambi sono in ordine asc. Sopra è usato per diversi ordinamenti.
Rakesh Jesadiya,

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

2

Utilizzando le dimensioni della pagina è possibile impostare il 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

Normalmente utilizzo quanto segue ma setPageSize()è anche valido:

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

Per quanto riguarda l'ordinamento, se la direzione dell'ordinamento è la stessa per tutti i campi, è possibile impostarlo in una sola chiamata utilizzando un array:

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

1

Ordinato da :

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

1

Puoi usare il codice qui sotto.

$giftColletion = $this->_giftFactory->getCollection();
$giftColletion->addFieldToFilter('store_id', 1)->setPageSize($limit)->setCurPage($criteria)->setOrder('position','ASC');
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.