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


1

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

$giftColletion = $this->_giftFactory->getCollection();
$giftColletion->addFieldToFilter('store_id', 1)->setPageSize($limit)->setCurPage($criteria)->setOrder('position','ASC');
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.