magento 2: Como usar a cláusula order by e limit na consulta sql

9

Estou usando o código a seguir para filtrar o resultado e quero limitar o resultado.

$giftColletion = $this->_giftFactory->getCollection();
$giftColletion->addFieldToFilter('store_id', 1);
$giftColletion->setOrder('position','ASC');
Nitin Pawar
fonte
Você tentou este $ giftColletion-> setPageSize (3)
Magento 2
Vou tentar, vai me resultar 3 registros, certo?
Nitin Pawar #
Sim, você precisa definir a contagem
Magento 2

Respostas:

8

Você pode usar setPageSize () para usar limite na coleção

$giftColletion = $this->_giftFactory->getCollection();
$giftColletion->addFieldToFilter('store_id', 1);
$giftColletion->setOrder('position','ASC');
$giftColletion->setOrder('salary','ASC');
$giftColletion->setPageSize(10);
Rakesh Jesadiya
fonte
Você pode alterar aqui 10 para o seu limite no campo setpagesize. por favor deixe-me saber se você tem qualquer problema
Rakesh Jesadiya
como posso definir a ordem de dois campos de dados, como cargo e salário.
Nitin Pawar #
Você pode usar dois tempos setOrder ()
Rakesh Jesadiya
você também pode tentar com $ giftCollection-> setOrder (matriz ('posição', 'salário'), asc) se ambos estiverem em ordem ascendente. Acima é usado para ordem de classificação diferente.
Rakesh Jesadiya
11
HIIII SEU trabalhando agora = >>> $ collection-> getSelect () -> having ('distance <'. $ Redious) -> order ('distance ASC') -> limit ($ pageSize, $ page);
Birjitsinh Zala 01/03/19
2

Usando o tamanho da página, você pode definir o limite:

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

Normalmente, uso o seguinte, mas setPageSize()também é válido:

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

Em relação à classificação, se a direção da sua classificação for a mesma para todos os campos, você poderá definir isso em apenas uma chamada usando uma matriz:

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

Ordenar por :

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

Você pode usar o código abaixo.

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