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

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

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

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

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

1

Ordenar por:

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

1

Puedes usar el siguiente código.

$giftColletion = $this->_giftFactory->getCollection();
$giftColletion->addFieldToFilter('store_id', 1)->setPageSize($limit)->setCurPage($criteria)->setOrder('position','ASC');
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.