我尝试找到如何在一个集合中设置限制的方法,但在谷歌上找到的答案只适用于具有setPage($pageNum, $pageSize)的目录,对其他任何集合都无法使用。
请见下面的答案。
我尝试找到如何在一个集合中设置限制的方法,但在谷歌上找到的答案只适用于具有setPage($pageNum, $pageSize)的目录,对其他任何集合都无法使用。
请见下面的答案。
有几种方法可以做到这一点:
$collection = Mage::getModel('...')
->getCollection()
->setPageSize(20)
->setCurPage(1);
将获得前20条记录。
这里是另一种可能更易读的方式:
$collection = Mage::getModel('...')->getCollection();
$collection->getSelect()->limit(20);
这将调用Zend Db Limit。您可以将偏移量设置为第二个参数。
在Magento 1.7.2中,查看code/core/Mage/Catalog/Model/Resource/Category/Flat/Collection.php
文件中第380行的setPage($pageNum, $pageSize)
函数即可实现。
$collection = Mage::getModel('model')
->getCollection()
->setCurPage(2) // 2nd page
->setPageSize(10); // 10 elements per pages
我希望这能帮助到某人。
$collection->setPage($pageNum, $pageSize);
。 - Pavel Novitsky订单收集限制:
$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;
$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);
limit(20) = LIMIT 0, 20
而不是LIMIT 20, 20
。如何更改页面?第一种解决方案是我下面提供的。 - Shadowbob$collection->getSelect()->limit(20);
,该模块覆盖了此核心块方法_getProductCollection()
。但它会抛出一个错误,如“未识别的方法'setCurPage()'”。你有什么想法我做错了什么吗? - zamil