Вопрос, который я пытался выяснить, это то, как установить лимит в коллекции, ответы, которые я нашел в Google, были доступны только для Каталога с помощью setPage ($ pageNum, $pageSize). Это не работает ни в каких других коллекциях.
См. Ответ ниже.
Magento: установите LIMIT для коллекции
Ответ 1
Существует несколько способов сделать это:
$collection = Mage::getModel('...')
->getCollection()
->setPageSize(20)
->setCurPage(1);
Получит первые 20 записей.
Вот альтернатива и, возможно, более читаемый способ:
$collection = Mage::getModel('...')->getCollection();
$collection->getSelect()->limit(20);
Это вызовет ограничение Zend Db. Вы можете установить смещение как второй параметр.
Ответ 2
Как сделать, это посмотреть код в code/core/Mage/Catalog/Model/Resource/Category/Flat/Collection.php
на строке 380 в Magento 1.7.2 на функцию setPage($pageNum, $pageSize)
$collection = Mage::getModel('model')
->getCollection()
->setCurPage(2) // 2nd page
->setPageSize(10); // 10 elements per pages
Надеюсь, это поможет кому-то.
Ответ 3
Лимит сбора заказов:
$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;
Ответ 4
Вы также можете реализовать это: - 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);