magento 2: Как использовать order by и предложение limit в sql запросе

9

Я использую следующий код для фильтрации результатов, и я хочу ограничить результат.

$giftColletion = $this->_giftFactory->getCollection();
$giftColletion->addFieldToFilter('store_id', 1);
$giftColletion->setOrder('position','ASC');
Нитин Павар
источник
Вы пробовали это $ giftColletion-> setPageSize (3)
Magento 2
Попробую, это приведет мне 3 записи, верно?
Нитин Павар
Да, вам нужно установить счетчик
Magento 2

Ответы:

8

Вы можете использовать setPageSize (), чтобы использовать лимит в коллекции

$giftColletion = $this->_giftFactory->getCollection();
$giftColletion->addFieldToFilter('store_id', 1);
$giftColletion->setOrder('position','ASC');
$giftColletion->setOrder('salary','ASC');
$giftColletion->setPageSize(10);
Ракеш Джесадия
источник
Вы можете изменить здесь 10 до своего предела в поле setpagesize. пожалуйста, дайте мне знать, если у вас есть какие-либо проблемы
Ракеш Джесадия
Как я могу установить порядок для двух полей данных, как должность и зарплата.
Нитин Павар
Вы можете использовать два раза setOrder ()
Ракеш Джесадия
Вы также можете попробовать с $ giftCollection-> setOrder (array ('position', 'salary'), asc), если оба находятся в порядке asc. Выше используется для другого порядка сортировки.
Ракеш Джесадия
1
HIIII ЕГО работает сейчас = >>> $ collection-> getSelect () -> Имеющий ('distance <'. $ Redious) -> order ('distance ASC') -> limit ($ pageSize, $ page);
Birjitsinh Zala
2

Используя размер страницы, вы можете установить ограничение:

$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

Я обычно использую следующее, но setPageSize()также действует:

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

Что касается сортировки, если направление вашей сортировки одинаково для всех полей, вы можете установить это всего за один вызов, используя массив:

$collection->setOrder([$field1, $field2, ...], $dir);
Jalogut
источник
1

Сортировать по :

$giftColletion->setOrder('position','ASC');
$giftColletion->setOrder('store_id','ASC');
Ронак Чаухан
источник
1

Вы можете использовать приведенный ниже код.

$giftColletion = $this->_giftFactory->getCollection();
$giftColletion->addFieldToFilter('store_id', 1)->setPageSize($limit)->setCurPage($criteria)->setOrder('position','ASC');
Dev
источник