我试图找出的问题是我们如何设置限制集合,我在Google上找到的答案仅适用于带有setPage的目录($ pageNum,$ pageSize)。这对任何其他收藏品都不起作用 请参阅下面的答案。
答案 0 :(得分:115)
有几种方法可以做到这一点:
$collection = Mage::getModel('...')
->getCollection()
->setPageSize(20)
->setCurPage(1);
将获得前20条记录。
这是替代方案,可能更具可读性:
$collection = Mage::getModel('...')->getCollection();
$collection->getSelect()->limit(20);
这将调用Zend Db限制。您可以将偏移设置为第二个参数。
答案 1 :(得分:11)
要做的是查看Magento 1.7.2第380行code/core/Mage/Catalog/Model/Resource/Category/Flat/Collection.php
中关于函数setPage($pageNum, $pageSize)
$collection = Mage::getModel('model')
->getCollection()
->setCurPage(2) // 2nd page
->setPageSize(10); // 10 elements per pages
我希望这会对某人有所帮助。
答案 2 :(得分:4)
订单收集限制:
$orderCollection = Mage::getResourceModel('sales/order_collection');
$orderCollection->getSelect()->limit(10);
$orderModel = Mage::getModel('sales/order');
foreach ($orderCollection->getItems() as $order) :
$order = $orderModel->load($order['entity_id']);
echo $order->getId().'<br>';
endforeach;
答案 3 :(得分: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);