magento 2: Cómo usar la cláusula order by y limit en consulta SQL

9

Estoy usando el siguiente código para filtrar el resultado y quiero limitar el resultado.

$giftColletion = $this->_giftFactory->getCollection();
$giftColletion->addFieldToFilter('store_id', 1);
$giftColletion->setOrder('position','ASC');
Nitin Pawar
fuente
¿Intentó esto $ giftColletion-> setPageSize (3)
Magento 2
Lo intentaré, me dará 3 registros, ¿verdad?
Nitin Pawar
Sí, debe establecer el recuento
Magento 2

Respuestas:

8

Puede usar setPageSize () para usar limit en la colección

$giftColletion = $this->_giftFactory->getCollection();
$giftColletion->addFieldToFilter('store_id', 1);
$giftColletion->setOrder('position','ASC');
$giftColletion->setOrder('salary','ASC');
$giftColletion->setPageSize(10);
Rakesh Jesadiya
fuente
Puede cambiar aquí 10 a su límite en el campo setpage size. por favor avíseme si tiene algún problema
Rakesh Jesadiya
¿Cómo puedo establecer el orden de dos campos de datos como posición y salario?
Nitin Pawar
puedes usar dos veces setOrder ()
Rakesh Jesadiya
También puede probar con $ giftCollection-> setOrder (array ('posición', 'salario'), asc) si ambos están en orden asc. Arriba se utiliza para diferentes tipos de orden.
Rakesh Jesadiya
1
HIIII está funcionando ahora = >>> $ colección-> getSelect () -> having ('distancia <'. $ Redious) -> orden ('distancia ASC') -> límite ($ pageSize, $ page);
Birjitsinh Zala
2

Usando el tamaño de página puede establecer el límite:

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

Normalmente uso lo siguiente pero setPageSize()también es válido:

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

Con respecto a la ordenación, si la dirección de su ordenación es la misma para todos los campos, puede configurarlo en una sola llamada usando una matriz:

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

Ordenar por:

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

Puedes usar el siguiente código.

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