magento 2:如何在SQL查询中使用order by和limit子句


9

我正在使用以下代码来过滤结果,并且我想限制结果。

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

您是否尝试过$ giftColletion-> setPageSize(3)
Magento

会尝试的,这将给我3条记录,对吗?
Nitin Pawar

是的,您需要设置计数
Magento

Answers:


8

您可以使用setPageSize()在集合中使用限制

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

您可以在此处将10更改为setpagesize字段中的限制。如果您有任何问题,请告诉我
Rakesh Jesadiya

如何设置职位和薪水等两个数据字段的顺序。
Nitin Pawar

您可以使用两次setOrder()
Rakesh Jesadiya

您也可以尝试使用$ giftCollection-> setOrder(array('position','salary'),asc)(如果两者均为asc顺序)。上面用于不同的排序顺序。
Rakesh Jesadiya '16

1
HIIII ITS现在可以正常工作= >>> $ collection-> getSelect()-> having('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');
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.