Подтвердить что ты не робот

Magento: установите LIMIT для коллекции

Вопрос, который я пытался выяснить, это то, как установить лимит в коллекции, ответы, которые я нашел в Google, были доступны только для Каталога с помощью setPage ($ pageNum, $pageSize). Это не работает ни в каких других коллекциях.
См. Ответ ниже.

4b9b3361

Ответ 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);