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.