38

我试图找出的问题是我们如何为集合设置限制,我在 Google 上找到的答案仅适用于具有 setPage($pageNum, $pageSize) 的目录。这对任何其他系列都不起作用。
请参阅下面的答案。

4

4 回答 4

122

做这件事有很多种方法:

$collection = Mage::getModel('...')
            ->getCollection()
            ->setPageSize(20)
            ->setCurPage(1);

将获得前 20 条记录。

这是另一种可能更具可读性的方式:

$collection = Mage::getModel('...')->getCollection();
$collection->getSelect()->limit(20);

这将调用 Zend Db 限制。您可以将偏移量设置为第二个参数。

于 2013-01-14T17:01:47.883 回答
13

方法是查看code/core/Mage/Catalog/Model/Resource/Category/Flat/Collection.phpMagento 1.7.2 中第 380 行的代码setPage($pageNum, $pageSize)

 $collection = Mage::getModel('model')
     ->getCollection()
     ->setCurPage(2) // 2nd page
     ->setPageSize(10); // 10 elements per pages

我希望这会对某人有所帮助。

于 2013-01-14T16:21:17.110 回答
5

订单收集限制:

$orderCollection = Mage::getResourceModel('sales/order_collection'); 
$orderCollection->getSelect()->limit(10);

foreach ($orderCollection->getItems() as $order) :
   $orderModel = Mage::getModel('sales/order');
   $order =   $orderModel->load($order['entity_id']);
   echo $order->getId().'<br>'; 
endforeach; 
于 2016-05-26T07:38:02.087 回答
1

你也可以实现这个:- setPage(1, n); 其中,n = 任意数。

$products = Mage::getResourceModel('catalog/product_collection')
                ->addAttributeToSelect('*')
                ->addAttributeToSelect(array('name', 'price', 'small_image'))
                ->addFieldToFilter('visibility', Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH) //visible only catalog & searchable product
                ->addAttributeToFilter('status', 1) // enabled
                ->setStoreId($storeId)
                ->setOrder('created_at', 'desc')
                ->setPage(1, 6);
于 2017-01-20T06:35:41.687 回答